<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    frida內存檢索svc指令查找sendto和recvfrom進行hook抓包

    一顆小胡椒2021-12-26 16:14:28

    利用wirkeshake抓包初步分析

    配置本地PC的ip為192.168.5.150并在上面運行server,然后在pixel手機上安裝client_連接192.168.5.150服務器.apk,手機ip為192.168.5.221,在PC上通過wireshake進行抓包。如下所示,看到No.14是手機發給server的HTTP GET包,No.17為server發給手機的HTTP報文。

    追蹤http流,可以看到server返回給手機一個字符串“hello world"。

    常規抓包方案

    根據上面分析,apk使用的http通信,采用tcp協議。

    2.1 嘗試Java層使用tcp通信的常規hook點,如下所示。

    java.net.SocketInputStream. socketRead0

    java.net.SocketOutputStream. socketWrite0

    2.2嘗試JNI層使用tcp通信的常規hook點。

    apk直接調用libc.so中接口實現收發包,一般tcp是使用send和recv函數,而udp使用sendto和recvfrom函數。查看libc源碼,send最終還是調用的sendto,而sendto通過系統調用實現。recv原理與send一致,所以我們直接hook住libc.so的recvfrom和sendto正常是可以拿到tcp和udp的包。

    經過實驗分析,上面兩種方法都沒有能抓到包,那么剩下的可能就是so中通過系統調用實現了sendto和recvfrom函數,下面對此猜想進行分析驗證。

    進一步分析

    3.1 先利用frida_fart對apk進行脫殼,脫殼后看到onCreate函數native化了,加載了一個libnative-lib.so,還有一個jni函數stringFromJNI。

    3.2 解壓apk取出libnative-lib.so,利用IDA分析,但是打不開報如下錯誤。

    利用readelf查看,section段查看結果如下,也是不正常的。我利用010Editor打開這個so進行ELF解析,也會報錯。

    3.3 使用frida去dump出運行時的so,核心代碼如下。

    將這個so拉入IDA進行分析,這次不會報錯了,使用ctrl+F5反編譯,查看到so中使用系統調用實現了sendto和recvfrom,如下所示。

    查看sub_2BD8的匯編代碼,看到svc 0指令對應的機器碼是“00 00 00 EF"。

    因為上面分析的so是加殼的so,所以我們無法確定svc指令的真實地址,所以需要從內存中根據機器碼找到svc指令,然后通過hook住svc指令,去dump收發包數據。

    frida腳本實現

    4.1 尋找hook時機,一般加殼so的解碼在init或者init_array中實現,它們在so加載過程中會進行調用,所以選擇java層加載so完畢后進行hook,代碼如下。

    4.2 根據libnative-lib.so模塊的基地址和偏移,從內存中匹配svc 0的機器碼,并反匯編出附近的指令進行匹配,如果找到了svc 0,則對其地址進行hook。

    4.3 hook住svc 0后打印收發包的data部分。

    首先查看sendto和recvfrom的機器碼分別是290和292, 如下所示。

    查看sendto原型如下,在它執行前打印出r0即fd,r1即buffer,r2即buffersize。在它執行后打印r0即sendto的返回值也就是真正發送出去的包的長度。recvfrom原理與之一致。

    下面在sendto和recvfrom執行完畢后,打印出收發包的data部分以及調用棧。

    4.4 運行frida腳本,同時支持dump出so和抓包,并打印出了調用棧。

    如下是發包數據,可以看到apk做了一次HTTP GET的操作。

    如下是收包數據,可以看到收到的真實數據為“helloworld"。

    綜上,frida抓包結果與wireshake抓包結果是一致的,同時也是可以利用frida dump出的運行中的so以及調用棧,分析so中收發包函數的流程。

    recvfromsendto
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    利用wirkeshake抓包初步分析配置本地PC的ip為192.168.5.150并在上面運行server,然后在pixel手機上安裝client_連接192.168.5.150服務器.apk,手機ip為192.168.5.221,在PC上通過wireshake進行抓包。如下所示,看到No.14是手機發給server的HTTP GET包,No.17為server發給手機的HTTP報文。
    組播通信介紹直白的講,組播就是為同一個網段下兩個或多個設備提供信息交換的渠道。這個渠道被稱作組播組,本質上是一個IP。我們發現這其中涉及了兩個協議——設備加入組播組所使用的協議,以及設備往組播端口發送信息的協議。筆者測試的設備所用的組播協議為IGMPV3,而設備和端口通信用的是UDP協議。具體的端口號的問題,后面會進行分析。這里就要先細說一下sendto函數了:sendto;
    目標:請編寫frida腳本,完成對該app通信的抓包
    0x01 前言最近 UPnP 比較火,恰好手里有一臺 Cisco RV110W,在 2021 年 8 月份思科官方公布了一個 Cisco RV 系列關于 UPnP 的 0day,但是具體的細節并沒有公布出來。
    Seccomp BPF與容器安全
    2022-07-17 10:07:03
    本文詳細介紹了關于seccomp的相關概念,包括seccomp的發展歷史、Seccomp BPF的實現原理以及與seccomp相關的一些工具等。此外,通過實例驗證了如何使用seccomp bpf 來保護Docker的安全。
    概述最近 fodcha 僵尸網絡泛濫。fodcha 是最近新發現的快速傳播型 DDos 僵尸網絡,由于使用 chacha 算法加密網絡流量,360 將其命名為 Fodcha[2]。該惡意軟件支持多種架構,包括 x86,arm,mips 等。
    前言本來是打算來挖它的,去搜索它以往爆出的漏洞,就先復現玩玩了,這次用了三種方法來驗證,分別為用戶級模擬,系統級模擬,
    接下來,我們通過wireshark來查找pcap文件中的丟包線索。結論1、1句忠告:不能通過判斷數據包是否已被接收端收到來判斷pcap中是否丟包。
    大廠基本為了程序的安全,會使用大量內聯SVC去調用系統函數,以此來保護程序的安全。如何實現SVC指令的IO重定向,成為最大的問題。內核態是當Linux需要處理文件,或者進行中斷IO等操作的時候就會進入內核態。當arm系列cpu發現svc指令的時候,就會陷入中斷,簡稱0x80中斷。
    也防止有人通過inlinehook 直接hook recv ,recvform,recvmsg 直接在收到數據包的時候被攔截和替換掉。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类