網站首頁 > 熱門病毒專題 > 淺談簡易端口掃描威脅感知系統的設計與實現
 
標題:淺談簡易端口掃描威脅感知系統的設計與實現
分類:熱門病毒專題 日期:2017/9/6 上午 09:27:45

淺談簡易端口掃描威脅感知系統的設計與實現

 一前言
  正所謂善守者不知其所攻,善攻者不知其所守。網絡攻防本來就是一場看不見硝煙的對抗。
  這套端口蜜罐檢測程序,是在總結了大量的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攻擊者,
  還是單純的抓肉雞者,這是個需要解決的問題。
 
 
 
CopyRight  © 江民科技 1996 - 2021 版權所有 All Rights Reserved
總代理:六合國際實業有限公司 E-mail: jiangmin@jiangmin.com.tw