淺談簡易端口掃描威脅感知系統的設計與實現
一前言
正所謂善守者不知其所攻,善攻者不知其所守。網絡攻防本來就是一場看不見硝煙的對抗。
這套端口蜜罐檢測程序,是在總結了大量的APT攻擊方法和思路之後,結合自己分析和思考,針對當前企業面臨的大量黑客攻擊,而無法得到有效的預警信息,設計了這個簡易版本的蜜罐程序。
二設計方法和思路
下面結合APT攻擊的常見流程來分析端口蜜罐程序設計的方法和思路。
上面這張圖片只是列出了常見的三種攻擊流程,APT攻擊的方法和思路還有很多,如2010年的震網病毒, 近兩年被發現的往流行的網絡管理客戶端xshell,putty, secureCRT等植入後門再從中篩選攻擊目標等等。
在上面的三種APT攻擊方法中,第一種方法是最普遍,被黑客使用最多的一種。那我們就針對第一種方法設計相關的防禦措施。在網絡入侵者使用第一種方法實施入侵時,會用nmap等端口掃描工具掃描子域名開放的端口信息。比如常見的21(ftp), 22(ssh),1433(mssql),3306(mysql),3389(rdp) 等端口。在端口掃描之後黑客會用暴力破解工具進行在線破解,破解失敗後會檢測常見的web漏洞,比如sql注入,xss,文件上傳漏洞等等。
既然端口掃描和在線破解會被黑客廣泛使用,那我們就可以開放常見的端口讓黑客主動發起網絡連接。當黑客用端口掃描工具和暴力破解工具掃描JIDS監聽的端口時,程序會記錄黑客的公網IP地址,掃描的日期時間,掃描的次數等信息, 同時當掃描的次數超過指定的次數時,會發出告警郵件。
三代碼實現部分
public static void fl_bind(int fl_port)
{
ServerSocket serverSocket=null;
try
{
serverSocket=new ServerSocket(fl_port);
Socket socket=null;
System.out.println("監聽: " + fl_port + " 成功.");
int count=1;
int value=15;
List iplist = new ArrayList();
while(true)
{
socket=serverSocket.accept();
fl_serverThread serverThread=new fl_serverThread(fl_port,socket);
serverThread.start();
InetAddress address=socket.getInetAddress();
String ipaddr=address.getHostAddress();
iplist.add(ipaddr);
count++;
if(count > value)
{
fl_ip_report(iplist,fl_port,value);
value+=300; //每增加三百次執行一次。
}
}
}catch (IOException e) {
System.out.println(fl_port + " in use");
}catch (Exception e) {
System.out.println(e.getMessage());
}
finally
{
try
{
if(serverSocket!=null)
serverSocket.close();
} catch (IOException e) {
}
}
}
上面只是整個程序代碼中的核心代碼部分。說說代碼的實現邏輯;當黑客用nmap掃描端口和使用hydra,ncrack 等若口令在線破解工具時,會發起TCP網絡連接請求,只要TCP連接發送過來,這邊監聽的常見端口如21,22, 3306 等就會做相應的響應,把黑客的公網IP 地址,掃描的日期時間記錄下來,記錄完成之後就會立即斷開,並且每個監聽的端口放在單獨的一個線程中,互不干擾。
四程序的特點
1 本程序由JAVA 開發實現,可以跨平台部署,既可以在windows系統部署,也可以在linux系統上面部署。
2 監聽的端口可以自定義,比如常見的應用層協議端口21(FTP)22(SSH),80(HTTP),443(HTTPS),1433(MSSQL),3306(MYSQL),1521(ORACLE),5432 (PostgreSQL),5901(VNC)等。
3 能同時記錄多個IP地址的連接請求,比如有100個不同的IP同時掃描開放的端口,這100個IP都會被記錄下來。
4 監聽的端口有對應的指紋信息,能欺騙黑客用nmap等端口掃描工具的檢測。
5 對每個IP掃描的次數自動統計並排序,自動生成威脅感知列表並發送email告警郵件信息。
欺騙nmap 端口指紋掃描工具的效果圖如下:
五程序部署環境網絡拓撲圖
本程序部署在內網的linux 系統中,只能檢測到內網的掃描攻擊,如果需要檢測外網的黑客掃描攻擊,需要把監聽的端口映射到有域名的公網IP。這樣既能檢測到內網掃描, 同時也能檢測到外網的掃描。
六對業務系統的影響
JIDS只是監聽網絡端口,當黑客掃描時,會記錄黑客的IP地址和掃描的次數,記錄完成之後,網絡連接就會自動斷開;在部署的系統中並沒有部署安裝具體的應用程序,如M ySql,FTP 服務器,Redis等應用。綜上所述,JIDS可以理解為一套模擬端口蜜罐,對現有業務系統無任何影響。
七檢測結果分析
JIDS的檢測輸出結果包括日誌和郵件告警兩種形式。下面是JIDS 這個工具運行一段時間後獲取的檢測結果:
JIDS的日誌功能能夠完整記錄所有入侵者的IP地址、日期時間、 掃描的端口,如下圖:(日誌是json格式)
郵件告警通過自動發送告警郵件至相關管理人員,告知入侵者統計信息,如掃描時間、IP地址、掃描次數、掃描端口、IP地址地域信息。郵件告警樣例如下:
總結:
本程序能檢測到黑客的端口掃描和若口令破解過程,包括IP地址,日期時間,掃描次數等等,
並能持續運行,直到程序進程結束為止,作為端口掃描威脅感知,這個程序基本上是能勝任的。
但是黑客攻擊的方法和思路非常的多,能不能100%的檢測到,以及怎樣從檢測到的結果中篩選出有目的的APT攻擊者,
還是單純的抓肉雞者,這是個需要解決的問題。 |