1. 程式人生 > >wireshark外掛開發詳細流程(含原始碼)

wireshark外掛開發詳細流程(含原始碼)

相關學習資料

複製程式碼
http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d
http://en.wikipedia.org/wiki/Instant_Messaging_and_Presence_Protocol
https://www.trillian.im/impp/
http://en.wap.wikipedia.org/wiki/Presence_and_Instant_Messaging
http://zh.wikipedia.org/wiki/XMPP
http://xmpp.org/
http://blog.csdn.net/xutaozero21/article/details/4873439
http://searchdomino.techtarget.com/definition/SIMPLE http://zh.wikipedia.org/wiki/SIMPLE http://datatracker.ietf.org/wg/simple/ http://qing.blog.sina.com.cn/tj/7f1e5f5333001g7p.html http://www.wireshark.org/docs/wsdg_html_chunked/ChapterDissection.html ftp://ftp.man.szczecin.pl/pub/security/packet-capture/wireshark/docs/developer-guide-a4.pdf
http://www.360doc.com/content/11/1117/17/8151417_165252820.shtml http://blog.csdn.net/guoqin863/article/details/9088757 http://www.cnblogs.com/hnrainll/archive/2012/06/17/2552943.html http://my.oschina.net/pkjason/blog/146057
複製程式碼

目錄

複製程式碼
1. IM通訊協議分析簡介
2. IM通訊軟體通訊協議逆向分析
  1) 原始碼逆向
  2) 通過嗅探資料包觀察資料包格式
3. 自定義格式資料包解析
4. 針對.pcap檔案進行應用層自定義協議分析
複製程式碼

1. IM通訊協議分析簡介

我們在進行(中間人)嗅探攻擊的時候,經常會遇到使用自定義通訊協議的IM通訊資料包,這類資料包對我們、或者wireshark來說都是一段"毫無意義的亂碼",要識別這類資料包,就必須學習自定義IM通訊協議的分析原理。
之所以會出現IM即時通訊協議,是因為以下原因

複製程式碼
1. 通訊終端間互動如何處理?
2. 伺服器間互動如何處理?
3. 終端同伺服器間互動如何處理?
4. 伺服器都扮演哪些角色?
5. 終端能力差異如何處理?
6. 通訊錯誤、安全性問題如何應對?
複製程式碼

複製程式碼
IM有四種協議
1. IMPP: 即時資訊和存在協議(IMPP Instant Messaging And PresenceProtocol)
2. PRIM: 存在和即時資訊協議(PRIM Presence and Instant Messageing Protocol)
3. XMPP: 可擴充套件訊息與存在協議XMPP(Extensible Messageing and Presence Protocol)
4. SIMPLE: SIP即時訊息和存在擴充套件協議SIMPLE(SIP for Instant Messaging and Presence Leveraging Extensions): 針對即時通訊和空間平衡擴充目的
複製程式碼

0x1: IMPP(Instant Messaging And PresenceProtocol)

IMPP主要定義必要的協議和資料格式,用來構建一個具有空間接收、釋出能力的即時資訊系統。它包括的草案RFC有

複製程式碼
1. 2000-02 RFC 2778: 針對站點空間和即時通訊的模型,它是一個資料性質的草案,定義了所有presence和IM服務的原理
2. 2000-02 RFC 2779: 針對即時通訊/空間協議的最小需求條件
3. 2002-07 RFC 3339: 定義了在Internet上傳輸的日期格式
4. 2004-08 RFC 3859: 定義了服務空間條款
5. 2004-08 RFC 3860: 定義了資訊空間條款
6. 2004-08 RFC 3861: 定義了資訊和服務空間的地址解析規範
7. 2004-08 RFC 3862: 定義了資料交換的條款
8. 2004-08 RFC 3863: 定義了資料格式 
複製程式碼

IMPP是一個比較老的協議標準,更多的相關資料請參閱

https://www.trillian.im/impp/

0x2: PRIM(Presence and Instant Messageing Protocol)

存在和即時訊息協議(PRIM)是一個早期建議的IETF標準的協議進行即時通訊。它是XMPP、SIMPLE協議的前身,現在已經不再使用。這個標準最早是在"IETF Request for Comments",即RFC 2778中提出

http://en.wap.wikipedia.org/wiki/Presence_and_Instant_Messaging

0x3: XMPP(Extensible Messageing and Presence Protocol)

XMPP與IMPP、PRIM、SIP(SIMPLE)合稱四大IM協議主流,在此4大協議中,XMPP是最靈活的。
XMPP的關鍵特色

複製程式碼
1. 開放
XMPP協議是自由、開放、公開的,並且易於瞭解。而且在客戶端、伺服器、元件、原始碼庫等方面,都已經各自有多種實現
2. 標準
網際網路工程工作小組(IETF)已經將Jabber的核心XML流協議以XMPP之名,正式列為認可的實時通訊及Presence技術。而XMPP的技術規格已被定義在RFC 3920及RFC 3921。任何IM供應商在遵
循XMPP協議下,都可與Google Talk實現連線
3. 高可用性
第一個Jabber(現在XMPP)技術是Jeremie Miller在1998年開發的,現在已經相當穩定。數以百計的開發者為XMPP技術而努力。今日的網際網路上有數以萬計的XMPP伺服器運作著,並有數以百
萬計的人們使用XMPP實時傳訊軟體。
4. 分散式的
XMPP網路的架構和電子郵件十分相像;XMPP核心協議通訊方式是先建立一個stream,XMPP以TCP傳遞XML資料流,沒有中央主伺服器。任何人都可以執行自己的XMPP伺服器,使個人及組織能夠
掌控他們的實時傳訊體驗。有點類似P2P的基本思想
5. 安全
任何XMPP協議的伺服器可以獨立於公眾XMPP網路(例如在企業內部網路中),而使用SASL及TLS等技術的可靠安全性,已內置於核心XMPP技術規格中。要記住的是,XMPP是一個工作在應用層上的
協議,在下層可以使用TLS等安全傳輸協議來保證通道的安全性
6. 可擴充套件
XML名稱空間的威力可使任何人在核心協議的基礎上建造定製化的功能。這得益於XML協議本身的高可擴充套件性,為了維持通透性,常見的擴充套件由XMPP標準基金會
7. 良好的應用彈性
XMPP除了可用在實時通訊的應用程式,還能用在:
    1) 網路管理
    2) 內容供稿
    3) 協同工具
    4) 檔案共享
    5) 遊戲
    6) 遠端系統監控
3. 使用XML流
XMPP協議的方式被編碼為一個單一的長的XML檔案,因此無法提供修改二進位制資料。因此, 檔案傳輸協議一樣使用外部的HTTP。如果不可避免,XMPP協議還提供了帶編碼的檔案傳輸的所有數
據使用的Base64。至於其他二進位制資料加密會話(encrypted conversations)或圖形圖示(graphic icons)以嵌入式使用相同的方法。
複製程式碼

XMPP網路是基於伺服器的(即客戶端之間彼此不"直接"交談),但是也是分散式的(伺服器可以是分散式的)。不像AOL實時通或MSN Messenger等服務,XMPP沒有中央官方伺服器,任何人都可以在自己的網域上執行XMPP伺服器。

Jabber識別符(JID)是使用者登入時所使用的賬號,看起來通常像一個電子郵件地址,如
[email protected]。前半部分為使用者名稱,後半部分為XMPP伺服器域名,兩個欄位以@符號區隔

假設朱麗葉([email protected])想和羅密歐([email protected])通話,他們兩人的賬號分別在Capulet.com及Montague.net的伺服器上。當朱麗葉輸入資訊並按下傳送鈕之後,一連串的事件就發生了:

1. 朱麗葉的"XMPP客戶端"將她的資訊傳送到"Capulet.com XMPP伺服器"
2. "Capulet.com XMPP伺服器"開啟與"Montague.net XMPP伺服器"的連線
3. "Montague.net XMPP伺服器"將資訊寄送給羅密歐。如果他目前不在線上,那麼儲存資訊以待稍後寄送

羅密歐與朱麗葉兩人的XMPP服務是由兩家不同的業者(對應兩個不同的XMPP伺服器)所提供的,而他們彼此傳訊時,不須擁有對方"伺服器"的賬號,也不須成為對方業者的會員。也就是說,中間的傳輸過程、伺服器轉接對XMPP使用者來說是透明的,XMPP使用者可以認為是在進行"點對點傳輸"

XMPP協議格式

基本的jabber客戶端必須實現以下標準協議(XEP-0211)

複製程式碼
1. RFC3920 Core
http://tools.ietf.org/html/rfc3920
2. RFC3921 Instant Messaging and Presence
http://tools.ietf.org/html/rfc3921
3. EP-030 Service Discovery
http://www.xmpp.org/extensions/xep-0030.html
4. XEP-0115 Entity Capabilities
http://www.xmpp.org/extensions/xep-0115.html
複製程式碼

基本的jabber伺服器必須實現以下標準協議(XEP-0212)

複製程式碼
1. RFC3920 Core
http://tools.ietf.org/html/rfc3920
2. RFC3921 Instant Messaging and Presence
http://tools.ietf.org/html/rfc3921
3. XEP-030 Service Discovery
http://www.xmpp.org/extensions/xep-0030.html
複製程式碼

通訊資料包格式

複製程式碼
1. 註冊
XEP-0077 In-Band Registration: http://www.xmpp.org/extensions/xep-0077.html
2. 登入
XEP-0020 Software Version: http://www.xmpp.org/extensions/xep-0092.html
3. 好友列表
    3.1) 獲取好友列表
    XEP-0083 Nested Roster Groups: http://www.xmpp.org/extensions/xep-0083.html
    3.2) 儲存好友列表
    XEP-0049 Private XML Storage: http://www.xmpp.org/extensions/xep-0049.html
    3.3) 備註好友資訊
    XEP-0145 Annotations: http://www.xmpp.org/extensions/xep-0145.html
4. 儲存書籤
XEP-0048 Bookmark Storage: http://www.xmpp.org/extensions/xep-0048.html
5. 好友頭像
    5.1) XEP-0008 IQ-Based Avatars: http://www.xmpp.org/extensions/xep-0008.html
    5.2) XEP-0084 User Avatar: http://www.xmpp.org/extensions/xep-0084.html
    5.3) XEP-0054 vcard-temp: http://www.xmpp.org/extensions/xep-0054.html
6. 使用者狀態
RFC-3921 Subscription States: http://www.ietf.org/rfc/rfc3921.txt
7. 文字訊息
    7.1) 線上訊息
    7.2) 離線訊息
        7.2.1) XEP-0013 Flexible Offline Message Retrieval: http://www.xmpp.org/extensions/xep-0013.html
        7.2.2) XEP-0160 Best Practices for Handling Offline Messages: http://www.xmpp.org/extensions/xep-0160.html
        7.2.3) XEP-0203 Delayed Delivery: http://www.xmpp.org/extensions/xep-0203.html
    7.3) 聊天狀態通知
    XEP-0085 Chat State Notifications: http://www.xmpp.org/extensions/xep-0085.html
    7.4) 群組聊天
    XEP-0045 Multi-User Chat: http://www.xmpp.org/extensions/xep-0045.html
8. 檔案傳輸
    8.1) XEP-0095 Stream Initiation: http://www.xmpp.org/extensions/xep-0095.html
    8.2) XEP-0096 File Transfer: http://www.xmpp.org/extensions/xep-0096.html
    8.3) XEP-0065 SOCKS5 Bytestreams: http://www.xmpp.org/extensions/xep-0065.html
    8.4) XEP-0215 STUN Server Discovery for Jingle: http://www.xmpp.org/extensions/xep-0215.html
    8.5) RFC-3489 STUN: http://tools.ietf.org/html/rfc3489
9. 音視訊會議
    9.1) XEP-0166 Jingle: http://www.xmpp.org/extensions/xep-0166.html#negotiation
    9.2) XEP-0167 Jingle Audio via RTP: http://www.xmpp.org/extensions/xep-0167.html
    9.3) XEP-0176 Jingle ICE Transport: http://www.xmpp.org/extensions/xep-0176.html
    9.4) XEP-0180 Jingle Video via RTP: http://www.xmpp.org/extensions/xep-0180.html#negotiation
    9.5) XEP-0215 STUN Server Discovery for Jingle: http://www.xmpp.org/extensions/xep-0215.html
    9.6) RFC-3489 STUN: http://tools.ietf.org/html/rfc3489
10. 使用者查詢
XEP-0055 Jabber Search: http://www.xmpp.org/extensions/xep-0055.html
11. 基礎功能
    11.1) 協議資料互動
    XEP-0004 Data Forms: http://www.xmpp.org/extensions/xep-0004.html
    11.2) jabber-RPC
    XEP-0009 Jabber-RPC: http://www.xmpp.org/extensions/xep-0009.html
    11.3) 功能協商
    XEP-0020 Feature Negotiation: http://www.xmpp.org/extensions/xep-0020.html
    11.4) 服務發現
    XEP-0030 Service Discovery: http://www.xmpp.org/extensions/xep-0030.html
    11.5) 會話建立
        11.5.1) XEP-0116 Encrypted Session Negotiation: http://www.xmpp.org/extensions/xep-0116.html
        11.5.2) XEP-0155 Stanza Session Negotiation: http://www.xmpp.org/extensions/xep-0155.html
        11.5.3) XEP-0201 Best Practices for Message Threads: http://www.xmpp.org/extensions/xep-0201.html
複製程式碼

0x4: SIMPLE(SIP for Instant Messaging and Presence Leveraging Extensions)

SIMPLE(SIP for Instant Messaging and Presence Leveraging Extensions),它有如下特點:

複製程式碼
1. 是一個基於sip協議的即時訊息通訊協議族,此協議
2. 由IETF的IMPP工作組提出,是目前為止制定的較為完善的一個
3. SIMPLE和XMPP兩個協議,都符合RFC2778和RFC2779
4. SIMPLE計劃利用SIP來發送presence資訊
5. SIP是IETF中為終端制定的協議,一般考慮用在建立語音通話中,一旦連線以後,依靠如實時協議(RTP)來進行實際上的語音傳送。但SIP不僅僅能被用在語音中,也可以用於視訊
6. SIMPLE被定義為建立一個IM程序的方法
複製程式碼

更多相關資料,請參閱

http://searchdomino.techtarget.com/definition/SIMPLE
http://zh.wikipedia.org/wiki/SIMPLE
http://datatracker.ietf.org/wg/simple/

2. IM通訊軟體通訊協議逆向分析

瞭解了基本的IM通訊協議之後,我們接下來學習一下怎麼對現有的IM軟體的通訊協議進行逆向分析,一般來說,IM通訊軟體使用的協議有如下特點:

1. 工作在基於TCP或者UDP的應用層
2. 自定義協議資料包格式
3. 使用現有的加密、壓縮的演算法,或者使用自定義的演算法庫

要分析軟體的通訊協議,就必須要採用"逆向分析"的方法,這裡的"逆向"包括

複製程式碼
1. 原始碼逆向
直接對軟體本身進行二進位制逆向分析,從原始碼的角度直接分析出資料包的"組裝過程",從而得到目標軟體使用的協議格式。這是最直接、有效的方法,但是難度較大,如果目標軟體採用了反除錯
等手段的話
2. 通過嗅探資料包觀察資料包格式
使用使用嗅探工具(如wireshark)在目標IM軟體的通訊鏈路上進行抓包,基於"控制變數"的思想,通過觀察不同"輸入值"對應的資料包內容,以此來逆向"推測"(只能是推測)出目標IM軟體使用的
通訊協議,這種方法雖然實施難度小,但工作量較大
複製程式碼

本次實驗的材料為"XDSEC2013 Exploit 5"的Chat.exe

http://pan.baidu.com/s/1eQw0hbW

0x1: 通過嗅探資料包觀察資料包格式

通過"控制變數"的思路,來逆向分析協議的資料包格式

複製程式碼
1. 尋找當前軟體和通訊相關的所有"輸入點"
第一步的目的收集所有的變數點(既然我們要控制變數),尋找所有可能使資料包變化的輸入點。對於本文中我們的程式來說,有如下幾點:
    1) 使用者名稱
    2) 監聽埠
    3
            
           

相關推薦

wireshark外掛開發詳細流程原始碼

相關學習資料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/Instant_Messaging_and_Presence_Protocol https:/

WebGL之Three.js開發第一個場景原始碼

在h5火熱的當下,各種絢麗的場景層出不窮。但是,我們是不是發現大部分或者說絕大部分的網站只是一個向用戶展示資訊的平臺。至於使用者與其進行的互動則僅限於下拉瀏覽,點選觸發,或者填寫一些表單資訊。 我一直在思考下一個web時代,並不敢斷言一定會是WebGL,但是在

電子產品設計開發管理流程必收藏

策略 cbc 數據結構 關系 產品測試 存檔 指定 開發人員 原理 電子產品設計開發管理流程(必收藏) 1、目的 保證公司產品的設計與開發有計劃、有控制地進行,確保開發規範,達到產品的預期要求 2、適用範圍 適用於公司自主產品的開發設計。 3、角色和職責 4、項目

自制Spark安裝詳細過程Scala

推薦spark安裝連結http://blog.csdn.net/weixin_36394852/article/details/76030317 一、scala下載安裝與配置          1.下載 &n

【Chapter4*程式設計總結一*】原始碼複製空洞檔案且不把0複製到新檔案

一、寫在前面 不積跬步無以至千里,一點點累積最後達到意想不到的效果。認真對待每一個小細節,一點點改正修訂,往往是問題關鍵所在。 二、coding中遇到的坑 步驟一:建立兩個檔案,一個是空洞檔案,另一個是非空洞檔案,分析比較兩者不同。 2-1 shell中出現亂碼 建立無空

區塊鏈技術進階-深入詳解以太坊智慧合約語言 solidity原始碼-熊麗兵-專題視訊課程...

區塊鏈技術進階-深入詳解以太坊智慧合約語言 solidity(含原始碼)—103人已學習 課程介紹         區塊鏈開發技術進階-深入詳解以太坊智慧合約語言 solidity視訊培訓教程:本課

Android應用反編譯詳細流程Mac系統

新版Android應用反編譯詳細流程(Mac系統) 以前一直都是用win來反編譯,後來換了Mac就一直沒弄過了,今天剛好有需要,正好也做個筆記,留著以後備用。 其實現在大多數應用都會做一些防護,下面這種方式,只適用於一般的沒做加固處理的apk。 現在開始吧,首先你需要準備好必

(轉)C# 獲取漢字的拼音首字母和全拼原始碼[A]

  https://blog.csdn.net/younghaiqing/article/details/62417269   C# 獲取漢字的拼音首字母 一種是把所有中文字元集合起來組成一個對照表;另一種是依照漢字在Unicode編碼表中的排序來確定拼音的首字母

小程式訊息推送原始碼java實現小程式推送,springboot實現微信訊息推送

最近需要開發微信和小程式的推送功能,需要用java後臺實現推送,自己本身java和小程式都做,所以就自己動手實現下小程式的模版推送功能推送。 實現思路 1 小程式獲取使用者openid,收集formid傳給java後臺 2 java推送訊息給指定小程式使用

Java註解-超詳細教程原始碼

1:Java中常見註解 @Override 用在方法上,表示這個方法重寫了父類的方法,如toString()。 @Deprecated 表示這個方法已經過期,不建議開發者使用。(暗示在將來某個不確定的版本,就有可能會取消掉) @SuppressWarnin

當下火熱的大資料視訊,免費送原始碼

年底了,你一年下來有多少努力已經完成,你心心念唸的大資料開發,都學會了嗎?想跳槽的你,想就業開發

用python怎樣識別驗證碼?原始碼

字元型圖片驗證碼識別完整過程及Python實現1 摘要驗證碼是目前網際網路上非常常見也是非常重要

immutability-helper 外掛的基本使用原始碼

本文介紹了 immutability-helper 外掛的基本使用,詳細介紹了相關 API 的用法及注意事項。 概念 先理解一下 Immutable 的概念,Immutable資料就是一旦建立,就不能更改的資料。每當對Immutable物件進行修改的時候,就會返回一個

SpringBoot進階之統一異常處理原始碼

淺談異常處理 在J2EE專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的、不可預知的異常需要處理。每個過程都單獨處理異常,系統的程式碼耦合度高,工作量大且不好統一,維護的工作量也很大。

SpringBoot進階之訪問資料庫原始碼

本文介紹在Spring Boot基礎下配置資料來源和通過JdbcTemplate編寫資料訪問的示例。 簡單介紹一下 @Controller:修飾class,用來建立處理http請求的物件 @RestController:Spring4之後加入的註解,原來在

雙目標定標定流程矯正

1.原理 2.採集 2.1標定板的製作。 大小:應當使得標定板在影象中佔比儘可能大一些。佔影象長度比例應當超過1/3;如果實在無法保證標定板佔影象比例比較大如果佔比比較小,則需要儘可能多采集一些影象。 平:標定板應當儘可能使理想平面。如果要求不是非常嚴格(比

利用spring+springMvc對單點登入(SSO)的簡單實現原始碼

一、簡介       繼上一次的第三方登入後,趁熱打鐵,繼續學習了一下單點登入。和oauth2.0的原理有些相似。都是客戶端登入的時候需要去服務端認證一下。認證通過才能進行登入。不同的是,單點登入需要自己去維持一個認證伺服器與使用者瀏覽器的全域性會話、客戶端端與使用者瀏覽器的

STL 簡單 iterator 的實現原始碼

        我使用vs2015寫的程式(原始碼下載) STL的中心思想在於將容器(container)和演算法(algorithms)分開,彼此獨立設計,最後再以一貼膠著劑將它們撮合在一起,而這個膠著劑就是迭代器(iterator)。          迭代器是訪問容器

VC++6.0+MFC網路聊天工具原始碼

  畢業一年多了,晒晒自己做的畢業設計,VC++6.0+MFC完成,所有程式碼都是自己一步步編寫完成,當初也沒有什麼經驗,全靠網上找資料試驗,大家有意見輕拍。   功能包括: 0.普通聊天(文字、圖片)   1.聊天室   2.傳輸檔案(斷點續傳)   3.共享螢幕   4

Android-指紋識別技術原始碼

今天介紹新增指紋識別技術的幾個步驟;;1.首先新增許可權<uses-permission android:name="android.permission.USE_FINGERPRINT"/>2.設計你的開鎖介面,由於不是正式專案,我就撈一次3.獲取移動裝置指紋管