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

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

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

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

哆啦安全 ? 來(lái)源:seeflower ? 2023-02-23 09:47 ? 次閱讀

前言

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

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

步驟

首先先保存開(kāi)機(jī)后的iptables,如果已經(jīng)修改過(guò),請(qǐng)重啟手機(jī)

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

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

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

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

參考: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

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

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

參考:利用 Redsocks 解決透明代理的遠(yuǎn)程抓包問(wèn)題

根據(jù)文章可知,借助redsocks進(jìn)行轉(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的代理地址,更多詳細(xì)用法請(qǐng)查閱redsocks2的readme

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


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

然后在root用戶(hù)下運(yùn)行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所對(duì)應(yīng)APP的全部tcp數(shù)據(jù)包了(除去來(lái)自127.0.0.1的請(qǐng)求)

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

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將來(lái)自特定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;
}

其他補(bǔ)充:

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

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

效果

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

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

審核編輯 :李倩

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

    關(guān)注

    12

    文章

    3908

    瀏覽量

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

    關(guān)注

    33

    文章

    1562

    瀏覽量

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

    關(guān)注

    4

    文章

    288

    瀏覽量

    29598

原文標(biāo)題:Android上基于透明代理對(duì)特定APP抓包技巧

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    WIZnet芯片通訊時(shí)怎么?

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

    http代理的分類(lèi)

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

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

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

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

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

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

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

    Android使用Wireshark

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

    詳細(xì)的Wireshark的和分析

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

    安卓端免代理

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

    Android APP滲透之雙向認(rèn)證突破

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

    Web測(cè)試中遇到的問(wèn)題

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

    一次掛代理Web測(cè)試中遇到的問(wèn)題

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

    APP不到?

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

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

    要實(shí)現(xiàn)對(duì)App的網(wǎng)絡(luò)數(shù)據(jù),需要監(jiān)控App與服務(wù)器交互之間的網(wǎng)絡(luò)節(jié)點(diǎn),監(jiān)控其中任意一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)(網(wǎng)卡),獲取所有經(jīng)過(guò)網(wǎng)卡中的數(shù)據(jù),對(duì)這些數(shù)據(jù)按照網(wǎng)絡(luò)協(xié)議進(jìn)行解析,這就是
    發(fā)表于 08-11 09:30 ?2946次閱讀
    如何抓取<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>原理及實(shí)現(xiàn)

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

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