天天看點

物聯網裝置Telnet密碼快速掃描工具

随着物聯網裝置越來越普及,大部分物聯網裝置接入公網但卻缺乏有效管理,是以希望能夠快速擷取物公網上聯網裝置的相關資訊,但是在實驗環境下,幾台計算機使用傳統的連結方式去掃描裝置效率太低,為了能夠達到這個目的,本文介紹了一個多線程telnet快速掃描器,可以快速地實作telnet物聯網裝置的密碼掃描,并将掃描結果存入庫中。

總體架構

1.資料輸出/syn泛洪發包,可配置掃描資訊

2.資訊收集及處理/資料嗅探及過濾

3.多線程scanner/多線程通信

4.指令互動狀态機/狀态機實作,互動過程

5.資料輸出/資料入庫

資料探測

xml檔案配置

程式使用xml格式配置讀取待掃描的ip位址段資訊

物聯網裝置Telnet密碼快速掃描工具

寫成xml的主要一開始是因為要掃描一個固定地域的ip位址段,正好使用python可以很友善的解析網頁上的内容,是以就将網絡上的ip段資訊處理成xml格式,友善以後讀取。

過程中使用的是xrange生成器,主要是怕生成的ip位址過大,占用過多記憶體。

syn泛洪

為了加快掃描速度,避免等待無用連結,使用scapy從第三層開始構造syn端口探測包并從特定的端口(例如:2222)大量發送出去,采用先回應先處理的原則,極大的縮短了掃描時間。

物聯網裝置Telnet密碼快速掃描工具

使用scapy可以很友善的構造資料包,如上圖,大量的構造syn資料包。使用scapy的時候注意需要root權限,同時需要注意目前工作目錄下的檔案名,有可能因為檔案名的原因導緻scapy無法正常工作。

資訊收集

sniffer

調用scapy中的sniff函數監聽資料包,使用bpf過濾規則,過濾特定端口(port:2222),ack響應的資料包,并将資料包的來源ip存入一個fifo隊列(隊列預設大小為:100),這是為了避免當收到伺服器端的重傳ack包,導緻處理該ip多次造成效率上的浪費

物聯網裝置Telnet密碼快速掃描工具

queue才是真正的産出隊列,而ip_prompt_queue隻是為了避免重複探測同一個的一個先進先出隊列,如果ip在fifo隊列當中,則代表該ip已經被探測過了直接略過。

由于sniffer線程是阻塞監聽不會退出的是以在一開始将這個線程設定為daemon線程,當沒有其他線程時,程式退出,而不會阻塞在sniffer。

物聯網裝置Telnet密碼快速掃描工具

  多線程

采用消費-生産的多線程工作模式,使用spewr線程向外泛洪syn資料包,使用sniffer線程監聽并分析資料包,使用多個scanner<線程來并行處理掃描到的ip位址。

物聯網裝置Telnet密碼快速掃描工具

使用一個線程标志位exitflag來通知線程退出,spewer線程結束發包之後會将exitflag置1,這時主線程将會循環檢測接收資料包的最後時間,如果在30秒内沒有監聽到資料包,則判斷探測過程已經完成沒有後續的産出了同時将exitflag置2,scanner線程将會檢查queue當中是否有資料,如果沒有資料且exitflag等于2或3,則表示沒有破解目标線程開始退出,同時将exitflag置3,通知主線程開始退出。

指令互動狀态機

為了避免邏輯的單一造成的漏掃之類的執行個體發生,放棄了使用單一的if-else 或者while-which的邏輯結構,進而采用有限狀态機的程式設計方法,實作對telnet協定更好的互動,互動過程中scanner将會從一個優先級隊列當中取出寫死的使用者名-密碼對,來對裝置進行暴力破解

物聯網裝置Telnet密碼快速掃描工具

  持有狀态機的父類

物聯網裝置Telnet密碼快速掃描工具

  使用pexpect開始資料互動

資料輸出

使用mysql資料庫,将成功探測得到的結果存入資料庫,存入資料庫之前還将添加ip歸屬地等資訊

物聯網裝置Telnet密碼快速掃描工具

使用mysql.sql腳本,建立資料庫及資料表,注意由于使用了歸屬地等中文資訊,是以建庫和建表的時候要設定好響應的字元集才不會導緻亂碼。設定ip的unique鍵,避免重複表項。

使用方法

1.操作環境linux

2.使用apt-get或者yum安裝mysql資料庫

3.下載下傳pip安裝程式(https://pypi.python.org/pypi/pip),按照說明安裝

4.使用pip指令安裝pexpect,mysql-python,17monip,scapy等(如:pip install pexpect)

5.進入mysql資料庫,source */mysql.sql 執行腳本建立資料庫和資料表

6.使用 python scanner.py 10 運作程式

項目代碼:https://github.com/scu-igroup/telnet-scanner

本文轉自d1net(轉載)