渗透测试工具备忘录
本文翻译自 Penetration Testing Tools Cheat Sheet 。
简介
渗透测试工具备忘录记录渗透测试时常用的命令,更深入的信息推荐参考特定工具的帮助文档或 本站 其他备忘录。
本目录关注网络底层相关的渗透测试,除了少量sqlmap的命令和一些Web服务枚举外,基本不包含Web应用渗透测试的内容。关于Web应用测试,建议参考《黑客攻防技术宝典》,这本书不管是用作专门学习还是参考手册都是很棒的。
文中缺漏之处欢迎 推特 私戳。
更新日志:
17/02/2017 :更新文章,增加VPN,DNS隧道,VLAN hopping(跳跃攻击) 等内容。
开始前
网络配置
设置IP 地址
子网划分
公开来源情报
被动信息收集
DNS
WHOIS 枚举
查询DNS IP
查询MX记录
用DIG 查询域传送
DNS 域传送
命令 | 解释 |
| Windows DNS域传送 |
| Linux DNS 域传送 |
邮件
Simply Email
使用Simply Email枚举所有所有网站(GitHub,目标站点等),配上代理或设置较长的访问间隔时间,这样就不会被Google发现是爬虫并用验证码拦住了。Simply Email还可以验证收集的邮件地址。
半主动信息收集
基本指纹识别
手动指纹识别/banner抓取
命令 | 解释 |
| 通过显示banner识别版本和指纹 |
使用NC抓取banner
主动信息收集
DNS 爆破
DNSRecon
DNS Enumeration Kali - DNSRecon |
root :~# dnsrecon -d TARGET -D /usr/share/wordlists/dnsmap.txt -t std --xml ouput.xml |
端口扫描
Nmap命令
更多命令,详见 Nmap备忘录 。
基本Nmap 命令:
命令 | 解释 | |
| 详细显示,syn探测,高速扫描,系统和服务版本信息,脚本扫描和路由跟踪 | |
| 同上,且扫描所有TCP端口,耗时更长 | |
| 同上,且扫描所有UDP端口,耗时巨长 | |
| 扫描可能包含漏洞的SMB服务 | |
` ls /usr/share/nmap/scripts/* | grep ftp ` | 利用关键字搜索nmap脚本 |
别在外网采用T4
扫描,使用TCP
连接扫描时用T2
比较合适。T4
扫描用在低延迟高带宽的内部网络测试会更合适。但这也取决于目标设备,如果用T4/T5
扫他们,结果就可能不准确。总的来说,扫描越慢越好,也可以先快速扫描1000个目标方便上手测试,然后再慢慢扫其余的。
Nmap UDP扫描
UDP 协议扫描器
扫描文件中IP地址的所有服务
扫描特定UDP服务
其他主机发现
不使用nmap发现主机的方法:
命令 | 解释 |
| 利用子网的地址解析协议发现同网段的IP,MAC地址和MAC厂商 |
枚举和攻击网络服务
用于识别/枚举网络服务的工具。
SAMB / SMB / Windows 域枚举
Samba枚举
SMB枚举工具
当然也可参考本站的 nbtscan 的速查表
SMB 版本指纹识别
寻找开放的SMB共享
枚举SMB用户
RID循环(RID Cycling )
Metasploit的RID循环攻击模块
手动测试空会话
NBTScan unixwiz
在Kali上安装使用:
LLMNR / NBT-NS欺骗
从网络中窃取凭证
使用Metasploit进行 LLMNR / NetBIOS请求
欺骗/毒化 LLMNR / NetBIOS请求:
抓取哈希
最后会得到NTLMv2 哈希,可以使用john或者hashcat破解。
Responder.py
你也可以选择使用 responder
注:整个渗透测试过程可以一直允许Responder.py
SNMP枚举工具
SNMP枚举工具有很多。
美化SNMP输出结果使易于阅读。
命令 | 解释 | ||
| grep hrSWRunName | cut -d -f | SNMP枚举 |
SNMPv3枚举工具
使用nmap识别SNMPv3服务器
Rory McCune 的脚本可以帮助自动化枚举SNMPv3的用户名枚举。
注意:下面的路径是Kali上Metasploit的SNMP v1和v2的攻击字典,更新的字典可以参考Daniel Miessler 在GitHub上的安全列表 。
远程服务枚举
这已是老生常谈,但为了本文内容的全面还是包含如下。
nmap -A
会进行下面列举的所有远程服务的枚举,所以这里只是顺便提及。
RSH 枚举
RSH运行命令
MetasploitRSH 登陆扫描
使用rusers显示已登陆用户
使用rlogin扫描整个子网
使用finger枚举
利用Solaris的bug显示所有已登录用户
rwho
使用nmap识别运行rwhod服务(513端口,UDP协议)的机器。
TLS&SSL 测试
testssl.sh
测试单一主机并将结果输出的HTML文件:
漏洞评估
在Kali Rolling上安装OpenVAS 8
确认openvas 正在运行:
通过https://127.0.0.1:9392
登陆openvas,密码是在安装时设置好的。
数据库渗透测试
攻击暴露在互联网上的数据库。
Oracle
安装 oscanner:
运行 oscanner:
Oracle TNS版本指纹识别
安装 tnscmd10g :
识别:
爆破Oracle账户
验证默认账户
对Oracle TNS 运行nmap脚本:
Oracle权限提升
利用条件:
Oracle必须暴露在互联网上
使用默认账户,如scott
简明流程:
创建函数
创建表 SYS.DUAL 的索引
刚刚建立的索引执行了SCOTT.DBA_X 函数
函数是被SYS用户执行的,因为表 SYS.DUAL 属于SYS用户
创建具有DBA权限的账户
下面的展示使用SCOTT用户,但其他默认的Oracle用户也是可以的。
使用NMAP NSE脚本验证oracle数据库中的默认账户:
使用脆弱账号登陆(假设你发现了一个)。
确认一个oracle用户的权限级别
Oracle权限提升和访问DBA
运行netcat,netcat -nvlp 443
。
运行查询语句
这时你应该拥有一个DBA用户,可以重新运行上面的命令来验证自己是否拥有DBA特权。
移除利用痕迹:
获取Oracle反弹shell:
MSSQL
枚举/发现
Nmap
Metasploit
爆破 MSSQL登陆
Metasploit MSSQL Shell
网络
Plink.exe 隧道
PuTTY Link 隧道
转发运程端口到本地地址:
跳板(Pivoting)
SSH 跳板(ssh Pivoting)
需在/etc/proxychains.conf
添加sock4 127.0.0.1 1010
利用SSH跳板跨越网络
需在/etc/proxychains.conf
添加sock4 127.0.0.1 1010
在/etc/proxychains.conf
添加sock4 127.0.0.1 1011
Meterpreter Pivoting
TTL 指纹识别
操作系统 | TTL 值 |
Windows |
|
Linux |
|
Solaris |
|
Cisco / Network |
|
IPv4 速查
各类IP的地址范围
类别 | IP 地址范围 |
A类 |
|
B类 |
|
C类 |
|
D类 |
|
E类 |
|
IPv4私有地址
类别 | 范围 |
A类私有地址 |
|
B类私有地址 |
|
C类私有地址 |
|
|
IPv4子网速查表
和渗透测试关系不太大,但确实很有用。
CIDR | 十进制掩码 | 主机数量 |
/31 |
|
|
/30 |
|
|
/29 |
|
|
/28 |
|
|
/27 |
|
|
/26 |
|
|
/25 |
|
|
/24 |
|
|
/23 |
|
|
/22 |
|
|
/21 |
|
|
/20 |
|
|
/19 |
|
|
/18 |
|
|
/17 |
|
|
/16 |
|
|
/15 |
|
|
/14 |
|
|
/13 |
|
|
/12 |
|
|
/11 |
|
|
/10 |
|
|
/9 |
|
|
/8 |
|
|
VLAN hopping(跳跃攻击)
使用nccgroup 的脚本简化攻击过程
VPN测试工具
识别VPN服务器
扫描VPN服务器网段:
IKEForce
使用IKEForce枚举或对 VPN 服务器进行字典攻击.
安装:
使用IKEForce对IKE VPN 进行枚举:
使用 IKEForce 爆破 IKE VPN:
IKE 激进模式 PSK 破解
验证VPN服务器
使用 IKEForce 枚举来获得组ID
使用 ike-scan 从IKE 终端抓取 PSK 哈希
使用 psk-crack 破解哈希
Step 1: 验证IKE服务器
Step 2:使用IKEForce枚举组名
Step 3: 使用ike-scan抓取PSK哈希
Step 4: 使用psk-crack 破解PSK 哈希
高级psk-crack 选项:
PPTP Hacking
验证PPTP服务 ,它以TCP协议在1723端口监听
NMAP PPTP 指纹识别:
PPTP字典攻击
DNS 隧道
通过DNS传送数据来绕过防火墙。dns2cat支持和目标主机间 的上传和下载文件(数据或程序)操作。
攻击机器:
安装:
运行dnscat2:
目标机器:
https://downloads.skullsecurity.org/dnscat2/
https://github.com/lukebaggett/dnscat2-powershell/
BOF / Exploit
Exploit 搜索
寻找枚举主机/服务的exp
命令 | 解释 | |
`searchsploit windows 2003 | grep -i local` | 从 exploit-db搜索EXP, 这里以WIndows2003本地提权为例 |
| 使用Google搜索exploit-db.com | |
| 用grep搜索metasploit的模块——因为msf的搜索有点差劲。 |
搜索EXP
安装exploit-db的本地备份:
在Kali上编译WIndows的exp
交叉编译Exploits
利用通用漏洞
利用Shellshock漏洞
一个用来寻找和利用Shellshock漏洞的攻击
cat file (查看文件内容)
Shell Shock 运行bind shell
Shell Shock 反弹shell
简单的本地Web服务器
使用Python命令运行本地Web服务,在接受反向shell和攻击目标机器是很方便。
命令 | 解释 |
| 运行一个基本的 http 服务,接受反弹shell等情况下很棒 |
| 运行一个基本的 Python3 http 服务 |
| 运行一个基本的ruby http 服务 |
| 运行一个基本的 PHP http 服务 |
挂载文件共享
怎样挂载 NFS / CIFS以进行 Windows 和Linux 的文件共享。
命令 | 解释 |
| 挂载NFS共享到 |
| 挂载Windows CIFS / SMB 共享到 Linux 的 |
| 使用命令行在Windows间挂载共享文件 |
| 在Kali上安装smb4k,方便从Linux的GUI查看SMB共享 |
HTTP / HTTPS Web服务枚举
命令 | 解释 |
| 对目标使用 nikto 进行扫描 |
| 使用GUI配置,命令行不好使 |
数据包侦测
命令 | 解释 |
| 将网卡eth0的80端口的流量导出到output.pcap |
用户名枚举
一些用来枚举目标系统用户名的手法。
SMB 用户枚举
命令 | 解释 |
| 枚举SMB用户 |
| 利用RID cycle枚举SMB用户 |
SNMP 用户枚举
COMMAND | DESCRIPTION | ||
`snmpwalk public -v1 192.168.X.XXX 1 | grep 77.1.2.25 | cut -d” “ -f4` | 枚举 SNMP 用户 |
| 枚举 SNMP 用户 | ||
| 使用nmap搜索SNMP服务器,然后用grep过滤输出 |
密码
字典
命令 | 解释 |
| Kali 的字典存放路径 |
爆破服务
使用Hydra 爆破FTP
命令 | 解释 |
| 使用Hydra 爆破FTP |
使用Hydra 爆破POP3
COMMAND | DESCRIPTION |
| 使用Hydra 爆破POP3 |
使用Hydra 爆破SMTP
COMMAND | DESCRIPTION |
| 使用Hydra 爆破SMTP |
使用 -t
限制并发连接数,如 -t 15
密码破解
渗透测试中用于密码破解的工具。
John The Ripper - JTR
命令 | 解释 |
| JTR 破解密码 |
| JTR 使用字典爆破解密 |
| JTR 爆破解密 |
Windows 渗透测试命令
See Windows Penetration Testing Commands.【待原文补充】
Linux 渗透测试命令
参考本站的Linux 命令速查表 ,该表提供了很多有用的命令。
编译EXP
Some notes on compiling exploits.【待原文补充】
判断C代码适用于Windows平台还是Linux
通过#include
的文件来判定
命令 | 解释 |
| Windows平台代码 |
| Linux平台代码 |
使用GCC编译Exploit
命令 | 解释 |
| GCC基本用法 |
在64位的Kali上用GCC编译32位的EXP
很方便地在64位的攻击机器上交叉编译32位的二进制文件。
命令 | 解释 |
| 在64位的Linux上交叉编译32位的二进制文件 |
在 Linux上编译可运行于Windows的exe文件
COMMAND | DESCRIPTION |
| 在 Linux上生成Windows的exe |
SUID 二进制
通常具有SUID的 C二进制文件要求以超级用户登陆shell,您可以按需更新UID / GID和shell。
下面是一些可用的shell:
运行 /bin/bash的SUID C Shell
运行 /bin/sh的SUID C Shell
构建 SUID Shell 二进制
32位
反向Shells
参考 反向 Shell 速查表 。
TTY Shells
Tips / Tricks to spawn a TTY shell from a limited shell in Linux, useful for running commands like su
from reverse shells.
一些模拟出TTY终端窗口以突破shell限制的技巧,便于从反向shell上执行类似 su
的特殊命令。
用Python模拟 TTY Shell的技巧
用sh模拟交互式shell
用Perl模拟 TTY Shell
用Ruby模拟 TTY Shell
用Lua 模拟TTY Shell
从Vi模拟TTY Shell
用NMAP模拟TTY Shell
Metasploit 速查表
这是一个metasploit方便的速查手册。关于跳板技术可参看 Meterpreter Pivoting 。
Meterpreter Payloads
Windows 反向meterpreter payload
命令 | 解释 |
| Windows 反向tcp payload |
Windows VNC Meterpreter payload
命令 | 解释 |
| Meterpreter Windows VNC Payload |
Linux 反向Meterpreter payload
命令 | 解释 |
| Meterpreter Linux 反向Payload |
Meterpreter速查表
有用的meterpreter 命令。
命令 | 解释 |
| Meterpreter上传文件到 Windows 目标 |
| Meterpreter 从 Windows 目标下载文件 |
| Meterpreter 在目标机器上执行.exe文件——用来执行上传的exp很方便 |
| 创建新的cmd shell通道 |
| Meterpreter显示进程 |
| Meterpreter获取目标shell |
| Meterpreter尝试提权 |
| Meterpreter尝试导出目标机器上的哈希 |
| Meterpreter端口转发 |
| Meterpreter删除端口转发 |
常用Metasploit 模块
最常用的metasploit 模块。
远程Windows Metasploit 模块(exploits)
命令 | 解释 |
| MS08_067 Windows 2k, XP, 2003 远程攻击 |
| MS08_040 Windows NT, 2k, XP, 2003 远程攻击 |
| MS09_050 Windows Vista SP1/SP2 和Server 2008 (x86) 远程攻击 |
本地Windows Metasploit 模块(exploits)
命令 | 解释 |
| 绕过 Windows 7 上的UAC |
辅助Metasploit 模块
命令 | 解释 |
| Metasploit HTTP 目录扫描 |
| Metasploit JBOSS 漏扫 |
| Metasploit MSSQL 认证扫描 |
| Metasploit MSSQL 版本扫描 |
| Metasploit Oracle 登陆模块 |
Metasploit Powershell 模块
命令 | 解释 |
| Metasploit powershell payload c传送模块 |
| Metasploit通过会话上传和执行 powershell脚本 |
| Metasploit JBOSS 部署 |
| Metasploit MSSQL payload |
Windows 后渗透Metasploit 模块
Windows Metasploit 提权模块。
命令 | 解释 |
| Metasploit 显示当前用户权限 |
| Metasploit 提取 GPP 保存的密码 |
| Metasplit 加载 Mimikatz |
| 检查当前用户是否对域内其他机器有管理员权限 |
| 自动化导出sam 文件,尝试提权等。 |
ASCII表速查
对Web应用渗透测试很有用,或者你被困在火星而需要和NASA通信。(梗自《火星救援》)
ASCII | 字符 |
| Null Byte 空字节 |
| BS 退格 |
| TAB 水平制表符 |
| LF 换行 |
| CR 回车 |
| ESC |
| SPC 空格 |
| ! |
| " |
| # |
| $ |
| % |
| & |
| ` |
| ( |
| ) |
| * |
| + |
| , |
| - |
| . |
| / |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| : |
| ; |
| < |
| = |
| > |
| ? |
| @ |
| A |
| B |
| C |
| D |
| E |
| F |
| G |
| H |
| I |
| J |
| K |
| L |
| M |
| N |
| O |
| P |
| Q |
| R |
| S |
| T |
| U |
| V |
| W |
| X |
| Y |
| Z |
| [ |
| \ |
| ] |
| ^ |
| _ |
| ` |
| a |
| b |
| c |
| d |
| e |
| f |
| g |
| h |
| i |
| j |
| k |
| l |
| m |
| n |
| o |
| p |
| q |
| r |
| s |
| t |
| u |
| v |
| w |
| x |
| y |
| z |
CISCO IOS(网际操作系统) 命令
收集一些有用的Cisco IOS 命令.
命令 | 解释 |
| 进入使能模式 |
| 配置终端 |
| 配置 FastEthernet 0/0 |
| 添加IP到 fa0/0 |
| 配置 vty line |
| 登陆 |
| 设置 telnet 密码 |
| 显示内存中的运行配置 |
| 显示启动配置 |
| 显示cisco IOS 版本 |
| 显示已打开的会话 |
| 显示网卡 |
| 显示网络接口细节 |
| 显示路由 |
| 显示access lists |
| 列出可用文件 |
| 显示文件信息 |
| 显示已删除文件 |
| 取消终端输出长度限制 |
| 复制运行配置到tftp 服务器 |
| 复制启动配置到运行配置 |
密码学
哈希长度
哈希 | 长度 |
MD5 |
|
SHA-1 |
|
SHA-256 |
|
SHA-512 |
|
哈希例子
可以直接使用 hash-identifier 命令判断哈希类型,但这里还是举些例子。
哈希 | 例子 |
MD5 Hash Example |
|
MD5 $PASS:$SALT Example |
|
MD5 $SALT:$PASS |
|
SHA1 Hash Example |
|
SHA1 $PASS:$SALT |
|
SHA1 $SALT:$PASS |
|
SHA-256 |
|
SHA-256 $PASS:$SALT |
|
SHA-256 $SALT:$PASS |
|
SHA-512 |
|
SHA-512 $PASS:$SALT |
|
SHA-512 $SALT:$PASS |
|
NTLM Hash Example |
|
SQLMap例子
小型 SQLMap 速查表:
命令 | 解释 |
| 自动化sqlmap扫描 |
| 指定目标的sqlmap scan |
| 使用联合查询技术扫描mysql后端的基于报错的注入 ,使用随机UA,导出数据库 |
| 检测可能存在注入点表单 |
| 导出指定数据库的user表并尝试破解哈希。 |
Last updated