0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android上基于透明代理對特定APP抓包技巧

哆啦安全 ? 來源:seeflower ? 2023-02-23 09:47 ? 次閱讀

前言

本文結(jié)合多篇已有文章,基于iptables + redsocks2 + Charles,最終實現(xiàn)對安卓上特定APP進行抓包,且APP無感知

即APP不能通過檢查系統(tǒng)代理或者VPN來判斷是不是有抓包行為

步驟

首先先保存開機后的iptables,如果已經(jīng)修改過,請重啟手機

iptables-save > /data/local/tmp/iptables.rules

要恢復iptables為之前的規(guī)則,則使用如下命令,或者重啟手機

iptables-restore /data/local/tmp/iptables.rules

使用如下命令,作用是:將uid10428所請求的在0-65535端口上的tcp流量,轉(zhuǎn)發(fā)到127.0.0.1:16666,但是排除了來自127.0.0.1的請求

參考:iptables 在 Android 抓包中的妙用

iptables -t nat -A OUTPUT -p tcp ! -d 127.0.0.1 -m owner --uid-owner 10428 --dport 0:65535 -j DNAT --to-destination 127.0.0.1:16666

要實現(xiàn)抓包,其中127.0.0.1:16666是一個透明代理的地址

然而根據(jù)已有文章可知,如果直接設(shè)置為Charles的透明代理地址,對于https將會出現(xiàn)invalid first line in request錯誤,只有http的請求數(shù)據(jù)會被正常解析

參考:利用 Redsocks 解決透明代理的遠程抓包問題

根據(jù)文章可知,借助redsocks進行轉(zhuǎn)發(fā)即可

我這里使用的是redsocks2,編譯參考:靜態(tài)交叉編譯 Android 的 redsocks2

這里直接使用編譯好的即可,也可以考慮自己編譯下,下載后解壓壓縮包

  • https://fh0.github.io/assets/android-redsocks2.tgz

創(chuàng)建配置文件,名為redsocks.conf,內(nèi)容如下:

base {
    log_debug = off;
    log_info = on;
    log = stderr;
    daemon = off;
    redirector = iptables;
}


redsocks {
    bind = "127.0.0.1:16666";
    relay = "192.168.1.14:8889";
    type = socks5;
    autoproxy = 0;
    timeout = 13;
}

其中bind就是透明代理地址,relay就是Charles的代理地址,更多詳細用法請查閱redsocks2的readme

注意配置文件的每一對{}后面都應(yīng)該有一個空行,否則會提示unclosed section


現(xiàn)在把redsocks.confredsocks2_arm64推送到/data/local/tmp

然后在root用戶下運行redsocks2_arm64即可

adb push redsocks2_arm64 /data/local/tmp/redsocks
adb shell chmod +x /data/local/tmp/redsocks
adb shell
su
cd /data/local/tmp
./redsocks

現(xiàn)在不出意外的話,Charles應(yīng)該就能看到uid10428所對應(yīng)APP的全部tcp數(shù)據(jù)包了(除去來自127.0.0.1的請求)

如果是只想對特定端口抓包,那么應(yīng)該使用-m multiport --dports 80,443這樣來限定一個或者多個端口

iptables -t nat -A OUTPUT -p tcp ! -d 127.0.0.1 -m owner --uid-owner 10428 -m multiport --dports 80,443 -j DNAT --to-destination 127.0.0.1:16666

總結(jié)

  1. 使用iptables將來自特定uid的全部tcp流量轉(zhuǎn)到指定的透明代理上

    iptables -t nat -A OUTPUT -p tcp ! -d 127.0.0.1 -m owner --uid-owner 10428 --dport 0:65535 -j DNAT --to-destination 127.0.0.1:16666

2. 使用redsocks將流量轉(zhuǎn)發(fā)到正向代理,如Charles的socks5代理

redsocks2_arm64下載地址如下

https://fh0.github.io/assets/android-redsocks2.tgz

redsocks.conf內(nèi)容如下

base {
    log_debug = off;
    log_info = on;
    log = stderr;
    daemon = off;
    redirector = iptables;
}


redsocks {
    bind = "127.0.0.1:16666";
    relay = "192.168.1.14:8889";
    type = socks5;
    autoproxy = 0;
    timeout = 13;
}

其他補充:

  • 安裝Charles證書到系統(tǒng)分區(qū),Charles才能解密https

如果你發(fā)現(xiàn)了文章中的錯誤,請指出

效果

0986fac8-b30a-11ed-bfe3-dac502259ad0.png

099ad412-b30a-11ed-bfe3-dac502259ad0.png

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126624
  • APP
    APP
    +關(guān)注

    關(guān)注

    33

    文章

    1557

    瀏覽量

    72155
  • VPN
    VPN
    +關(guān)注

    關(guān)注

    4

    文章

    285

    瀏覽量

    29533

原文標題:Android上基于透明代理對特定APP抓包技巧

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于Linux內(nèi)核的透明代理配置方案

    本內(nèi)容提供了基于Linux內(nèi)核的透明代理配置方案,先解釋為什么要配置透明代理,如何利用Linux內(nèi)核來實現(xiàn)
    發(fā)表于 11-03 16:47 ?816次閱讀

    WIZnet芯片通訊時怎么?

    `Q:WIZnet芯片進行公網(wǎng)通訊或者芯片間通訊的話怎么?A:芯片和PC通訊的話可以直接通過Wireshark,如果芯片和公網(wǎng)直接通訊或者通訊是發(fā)生在芯片之間,則沒有辦法直接
    發(fā)表于 03-13 11:32

    http代理的分類

    有著不同的安全性,下面就隨著億牛云代理的腳步一起看看HTTP代理是怎么按安全性分類的吧。透明代理(簡單代理):透明代理的意思是客戶端根本不需
    發(fā)表于 12-20 17:25

    Linux內(nèi)核的透明代理配置解析

    如果設(shè)置了透明代理,那么在客戶端只需要在網(wǎng)絡(luò)配置中設(shè)置一個網(wǎng)關(guān)就可以了,其他的任何程序都不用另行設(shè)置。這是設(shè)置透明代理最大的誘惑,當然這只是對我而言,其實iptables有更強大的防火墻功能,這才是它最大的用處。但是,此次配置不涉及防火墻,如果有興趣的請看上貼
    發(fā)表于 10-27 11:28 ?0次下載

    USB數(shù)據(jù)軟件程序下載

    USB數(shù)據(jù)軟件程序下載
    發(fā)表于 09-09 16:01 ?7次下載

    MCU_Wireshark USB 過濾(特定端口地址)

    啟動WiresharkUSB的過程如下,這里點擊“開始”就可以進入界面了。不過,Wireshark啟動USB
    發(fā)表于 12-08 16:36 ?13次下載
    MCU_Wireshark USB <b class='flag-5'>抓</b><b class='flag-5'>包</b>過濾(<b class='flag-5'>抓</b><b class='flag-5'>特定</b>端口地址)

    Android使用Wireshark

    Frida逆向分析APP實戰(zhàn) Objection動態(tài)分析App Frida Hook的使用方法 Android逆向分析基礎(chǔ)(一) Android逆向分析基礎(chǔ)(二) 使用frida-ne
    的頭像 發(fā)表于 11-16 10:07 ?3944次閱讀

    詳細的Wireshark的和分析

    選擇菜單欄Capture -> Option,勾選WLAN網(wǎng)卡(這里需要根據(jù)各自電腦網(wǎng)卡使用情況選擇,簡單的辦法可以看使用的IP對應(yīng)的網(wǎng)卡)。點擊Start。啟動。
    的頭像 發(fā)表于 11-24 15:29 ?1276次閱讀

    安卓端免代理

    想必你們都遇到過一些APP在運行過程中, 不允許有網(wǎng)絡(luò)代理的存在, 如果有網(wǎng)絡(luò)代理, 就無法訪問服務(wù)器. 這樣也就無法讓用戶進行分析了.
    的頭像 發(fā)表于 03-03 14:00 ?4124次閱讀
    安卓端免<b class='flag-5'>代理</b><b class='flag-5'>抓</b><b class='flag-5'>包</b>

    Android APP滲透之雙向認證突破

    今天有hxd發(fā)來一個APP說存在雙向認證,沒法正常抓進行滲透,的結(jié)果長下面這個樣子,一般
    的頭像 發(fā)表于 05-20 14:08 ?5185次閱讀
    <b class='flag-5'>Android</b> <b class='flag-5'>APP</b>滲透之雙向認證突破

    Web測試中遇到的問題

    背景 測試的web項目是外部網(wǎng)站,需要掛socks代理才能訪問,但是通過burp配置好之其他網(wǎng)站均能正常抓,唯獨項目網(wǎng)站不到 問題 開始時使用clashx+burp,clashx
    的頭像 發(fā)表于 05-29 09:14 ?691次閱讀
    Web測試中遇到的<b class='flag-5'>抓</b><b class='flag-5'>包</b>問題

    一次掛代理Web測試中遇到的問題

    測試的web項目是外部網(wǎng)站,需要掛socks代理才能訪問,但是通過burp配置好之其他網(wǎng)站均能正常抓,唯獨項目網(wǎng)站不到
    的頭像 發(fā)表于 05-29 09:13 ?1185次閱讀
    一次掛<b class='flag-5'>代理</b>Web測試中遇到的<b class='flag-5'>抓</b><b class='flag-5'>包</b>問題

    APP不到?

    其實如果不進行客戶端安裝證書,也是可以的,但是沒有信任的證書相當于就是在路由走一次,并沒有加解密過程,實際還是客戶端與服務(wù)器端進行加解密通信
    的頭像 發(fā)表于 08-03 16:45 ?1068次閱讀
    <b class='flag-5'>APP</b><b class='flag-5'>抓</b>不到<b class='flag-5'>包</b>?

    如何抓取app數(shù)據(jù) 網(wǎng)絡(luò)原理及實現(xiàn)

    要實現(xiàn)對App的網(wǎng)絡(luò)數(shù)據(jù),需要監(jiān)控App與服務(wù)器交互之間的網(wǎng)絡(luò)節(jié)點,監(jiān)控其中任意一個網(wǎng)絡(luò)節(jié)點(網(wǎng)卡),獲取所有經(jīng)過網(wǎng)卡中的數(shù)據(jù),對這些數(shù)據(jù)按照網(wǎng)絡(luò)協(xié)議進行解析,這就是
    發(fā)表于 08-11 09:30 ?2833次閱讀
    如何抓取<b class='flag-5'>app</b>數(shù)據(jù)<b class='flag-5'>包</b> 網(wǎng)絡(luò)<b class='flag-5'>抓</b><b class='flag-5'>包</b>原理及實現(xiàn)

    如何在Android 10設(shè)備通過App控制GPIO

    本文檔提供了在 Android 10 設(shè)備通過應(yīng)用程序(App)控制通用輸入輸出(GPIO)的詳細指南。這涵蓋了從創(chuàng)建 gpio驅(qū)動到App 配置 以及 SELinux 策略以允許
    的頭像 發(fā)表于 07-22 17:59 ?839次閱讀