ããã«ã¡ã¯ãã»ãã¥ãªãã£ã¨ã³ã¸ãã¢ã®å°ç«¹ æ³°ä¸(aka tkmru)ã§ãã ã¢ã«ããã§ã¯ãWebã¢ããªã±ã¼ã·ã§ã³ãã²ã¼ã ã¢ããªã«å¯¾ããèå¼±æ§è¨ºæã社å ãããã¯ã¼ã¯ã«å¯¾ãããããã¬ã¼ã·ã§ã³ãã¹ãããã¼ã«éçº/æ¤è¨¼ãªã©ãæ å½ãã¦ãã¾ãã
仿¥ã¯ãå æ¥ä½æããAndroidã®ãããã·è¨å®ãã³ãã³ãã©ã¤ã³ããè¡ããã¼ã«ã®ç´¹ä»ã¨ããã®ä»ã«ãããèå¼±æ§è¨ºæã«ä½¿ããå 製ãã¼ã«ã®ç´¹ä»ããã¾ãã ãã®è¨äºã¯ãAkatsuki Advent Calendar 2020ã®24æ¥ç®ã®è¨äºã§ãã
èå¼±æ§è¨ºæã«ä½¿ããããã·ãã¼ã«ã¨ã¯
èå¼±æ§ãçºè¦ããæ¹æ³ã®ã²ã¨ã¤ã«ã対象ã¨ãªãWebã¢ããªãã¹ããã¢ããªã®éä¿¡å 容ããããã·ãã¼ã«ä¸ã§ç¢ºèªãããªã¯ã¨ã¹ããã¬ã¹ãã³ã¹ãç·¨éããã¨ããæ¹æ³ãããã¾ãã èå¼±æ§è¨ºææã«ç¨ãããããã·ãã¼ã«ã¯ãBurp SuiteãPacketProxyãªã©ãç¥ããã¦ãã¾ãã

ã¹ããã¢ããªã®éä¿¡ããããã·ãã¼ã«ã¸ã¨åããæ¹æ³
ã¹ããã¢ããªã®éä¿¡ããããã·ãã¼ã«ä¸ã§ç¢ºèªããã«ã¯ã端æ«ã®ãããã¯ã¼ã¯è¨å®ã夿´ããããã·ãã¼ã«ã¸ã¨éä¿¡ãæ²ããå¿ è¦ãããã¾ãã ããã§ã¯ããç¨ãããã2ã¤ã®æ¹æ³ãç´¹ä»ãã¾ãã
ãããã·ã®IPã¢ãã¬ã¹ããã¼ããæå®
ãããã·ãã¼ã«ãåä½ãã¦ããPCã®IPã¢ãã¬ã¹ããã¼ãã端æ«ã®ãããã¯ã¼ã¯è¨å®ç»é¢ã§æå®ãããã¨ã§ãããã·ãã¼ã«ã¸ã¨éä¿¡ãåãããã¨ãã§ãã¾ãã ããã¯æãç°¡åãªæ¹æ³ã§ãã
Androidã§ã¯ãWi-Fiã®è©³ç´°è¨å®ããããããã·ã®IPã¢ãã¬ã¹ããã¼ããæå®å¯è½ã§ããiOSã使ç¨ãã¦ããå ´åãè¨å®ããé ç®ã¯åãã§ãã

DNSãµã¼ãã¼ã追å ããã¬ã³ã¼ããå½è£ ãã
PacketProxyã«ã¯èªç±ã«DNSã¬ã³ã¼ãã夿´ã§ããDNSãµã¼ãã¼ãçµã¿è¾¼ã¾ãã¦ãã¾ãã ãã®DNSãµã¼ãã¼ä¸ã§ã¢ããªã®éä¿¡å ã®ãã¡ã¤ã³ãæå®ãããããã·ãã¼ã«ãçµç±ãã¦éä¿¡ããããã«DNSã¬ã³ã¼ããå½è£ ãããã¨ã§ãéä¿¡å 容ãåå¾ã§ãã¾ãã ãã®æ¹æ³ã¯ãæå®ãããã¡ã¤ã³ã¨ã®éä¿¡ã®ã¿ãåå¾ã§ããç¹ããSSL Pinningãæ½ããã¦ãã¦ãéä¿¡å ã®ãã¡ã¤ã³ã確èªãããã¨ãã§ããç¹ã§ä¾¿å©ã§ãã
Androidã§ã¯ããããã·ã®IPã¢ãã¬ã¹ãæå®ããå ´åã¨åããWi-Fiã®è©³ç´°è¨å®ç»é¢ãããDNSã®è¨å®ã夿´å¯è½ã§ãã ããã§æå®ããDNSãµã¼ãã¼ã®IPã¢ãã¬ã¹ã¯PacketProxyãåä½ãã¦ããPCã®ã¢ãã¬ã¹ã§ãã Androidã®å ´åã¯ã次ã®ç»åã®ããã«ç«¯æ«ã®IPã¢ãã¬ã¹ãã²ã¼ãã¦ã§ã¤ã®IPã¢ãã¬ã¹ããããã¯ã¼ã¯ãã¬ãã£ãã¯ã¹é·ãæå®ããå¿ è¦ãããã¾ãã iOSã®å ´åã¯DNSã®ã¢ãã¬ã¹ãå·®ãæ¿ããã ãã§OKã§ãã

ã³ãã³ãã©ã¤ã³ãããããã·ã®è¨å®ãè¡ãããã¼ã«ã使ãã
ãããã·ã®è¨å®ãGUIãæä½ãã¦è¡ãã®ã¯å°ãæéããããã¾ãã ç¹ã«Androidã§DNSãµã¼ãã¼ãæå®ããã«ã¯ãDHCPããªãã«ãã¦ç«¯æ«ã®IPã¢ãã¬ã¹çãæå®ããªãã¨ãããªãã®ã§ããã©ãããã§ãã ãã®ãããã³ãã³ãã©ã¤ã³ãããããã·ã®è¨å®ãç°¡åã«è¡ãããããaprox ã使ãã¾ããã
ã¤ã³ã¹ãã¼ã«æ¹æ³
aproxã¯Pythonã§ä½æããã¦ãããããpipã§ã¤ã³ã¹ãã¼ã«å¯è½ã§ãã
$ pip install git+ssh://[email protected]/aktsk/aprox.git
ä½¿ãæ¹
ãµãã³ãã³ããæå®ãããã¨ã§ãæ©è½ãå¼ã³åºãã¾ãã
ãããã·ãæå®ãã
proxyã³ãã³ãã§ãããã·ãå¾ ã¡åãã¦ããIPã¢ãã¬ã¹ããã¼ããè¨å®ã§ãã¾ãã
$ aprox proxy 192.168.100.10:8080 Local proxy has been set up
DNSãµã¼ãã¼ãæå®ããï¼rootå端æ«éå®ï¼
dnsã³ãã³ãã§DNSãµã¼ãã¼ã®IPã¢ãã¬ã¹ãæå®ã§ãã¾ãã ãã®æ©è½ã¯root権éãå¿ è¦ãªndcã³ãã³ãã使ã£ã¦ãããããrootå端æ«ãPCã«ã¤ãªãã§ããå ´åãã使ãã¾ããã
$ aprox dns 192.168.100.10 200 0 Resolver command succeeded
è¨å®ãã¯ãªã¢ãã
clearã³ãã³ãã§ãããã·ãDNSãµã¼ãã®è¨å®ãã¯ãªã¢ã§ãã¾ãã
$ aprox clear Local proxy is not configured... Cleared local DNS settings!!
éçºæã«ç¥ã£ããããã°ãã¯ããã¯
ndcã³ãã³ãã«é¢ãã¦ã¯ãã¾ãããã¥ã¡ã³ãããªããæ±ãã«è¦æ¦ãã¾ããããã®ãããDNSã®ãªã¯ã¨ã¹ããæ¬å½ã«ç«¯æ«ããåºã¦ããã®ã確ãããããªãã¾ããã ã¡ãªã¿ã«aproxã®å é¨ã§ã¯æ¬¡ã®ããã«ndcã³ãã³ãã使ã£ã¦ãDNSãµã¼ãã¼ã追å ãã¦ãã¾ãã
$ su # dumpsys netd # ç¾å¨ã®ä½¿ç¨ãã¦ãããããã¯ã¼ã¯IDãç¢ºèª # ndc resolver setnetdns <ãããã¯ã¼ã¯ID> '' <IP ã¢ãã¬ã¹>
DNSã®ãã°ã¯æ¬¡ã®ããã«ç¢ºèªã§ãã¾ããã iptablesã³ãã³ãã使ãããã°ã®å é ã«DNS_QUERIESã¨ããæååã追å ããdmesgã³ãã³ãã§ãã°ã確èªãã¦ãã¾ãã
3|sargo:/ $ su sargo:/ # iptables -I OUTPUT -m udp -p udp --dport 53 -j LOG --log-prefix 'DNS_QUERIES ' sargo:/ # dmesg -w | grep 'DNS_QUERIES' [54672.362220] DNS_QUERIES IN= OUT=wlan0 SRC=192.168.100.20 DST=192.168.100.15 LEN=59 TOS=0x00 PREC=0x00 TTL=64 ID=40850 DF PROTO=UDP SPT=41015 DPT=53 LEN=39 MARK=0xf0068 [54672.525921] DNS_QUERIES IN= OUT=wlan0 SRC=192.168.100.20 DST=106.187.2.33 LEN=59 TOS=0x00 PREC=0x00 TTL=64 ID=50180 DF PROTO=UDP SPT=55042 DPT=53 LEN=39 MARK=0xc0068 [54672.526507] DNS_QUERIES IN= OUT=wlan0 SRC=192.168.100.20 DST=106.187.2.33 LEN=59 TOS=0x00 PREC=0x00 TTL=64 ID=50181 DF PROTO=UDP SPT=26049 DPT=53 LEN=39 MARK=0xc0068 [54672.589872] DNS_QUERIES IN= OUT=wlan0 SRC=192.168.100.20 DST=192.168.100.15 LEN=59 TOS=0x00 PREC=0x00 TTL=64 ID=40865 DF PROTO=UDP SPT=42598 DPT=53 LEN=39 MARK=0xf0068 [54672.847426] DNS_QUERIES IN= OUT=wlan0 SRC=192.168.100.20 DST=106.187.2.33 LEN=67 TOS=0x00 PREC=0x00 TTL=64 ID=50221 DF PROTO=UDP SPT=33378 DPT=53 LEN=47 MARK=0xc0068 [54672.848117] DNS_QUERIES IN= OUT=wlan0 SRC=192.168.100.20 DST=106.187.2.33 LEN=67 TOS=0x00 PREC=0x00 TTL=64 ID=50222 DF PROTO=UDP SPT=31970 DPT=53 LEN=47 MARK=0xc0068 [54672.849920] DNS_QUERIES IN= OUT=wlan0 SRC=192.168.100.20 DST=106.187.2.33 LEN=63 TOS=0x00 PREC=0x00 TTL=64 ID=50223 DF PROTO=UDP SPT=50412 DPT=53 LEN=43 MARK=0xc0068
ã¾ãããã®ããã«ãã°ã確èªãããã¨ã§ãã¢ããªããåºãDNSã®ãªã¯ã¨ã¹ãã®å®å ã¯æå®ãããã®ã«å¤æ´ããã¦ãããããã©ã¦ã¶ããåºãDNSã®ãªã¯ã¨ã¹ãã®å®å ã¯ããã©ã«ãã®ã¾ã¾ã§ãããã¨ãåããã¾ããã ã¢ããªã®èå¼±æ§è¨ºæã§ã¯ç¾ç¶ã®ã¾ã¾ã§å°ããªãã®ã§ããã®ã¾ã¾å ¬éãã¦ãã¾ãã
ä»ã®å 製診æãã¼ã«
ã¢ã«ããã§ã¯ãä»ã«ãèå¼±æ§è¨ºææã«ä½¿ãããã¼ã«ã使ããOSSã¨ãã¦å ¬éãã¦ãã¾ãã
apk-medit
apk-meditã¯ãroot権éãå¿ è¦ã¨ããªãã¡ã¢ãªæ¹ãããã¼ã«ã§ãã ã¡ã¢ãªæ¹ããã¯ã¹ããã²ã¼ã ã®èå¼±æ§è¨ºææã«è¦ãé ç®ã®ã²ã¨ã¤ã§ãã ãã®ãã¼ã«ã«é¢ãã¦ã¯ãBlack Hat USA ArsenalããCODE BLUE Blueboxãªã©ã§çºè¡¨ãã¾ããã
以åã«ã社ã®ããã°ã«ç´¹ä»è¨äºãæ¸ããã®ã§ãèå³ãããã°ãã¡ããèªãã§è¦ã¦ãã ããï¼
apkutil
apkutilã¯ãAPKãã¡ã¤ã«ããã³ã¼ãããéã«androidmanifest.xmlããã¼ã¹ãæ§ã ãªæ å ±ã表示ããããèå¼±æ§è¨ºæã«å¿ è¦ãªããããèªåã§å½ã¦ãããã¦ããããã¼ã«ã§ãã
次ã®ããã«ã³ãã³ããå®è¡ãããã¨ã§ãdebuggable屿§ãtrueã«ããããnetworkSecurityConfigã®è¨å®ãããããã¤ã¤ãå度ãã«ããã¦ããã¾ãã
$ apkutil all sample.apk Decoding APK by Apktool... I: Using Apktool 2.4.1 on sample.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... ... Potentially Sensitive Files: sample/README.md sample/hoge.sh Checking AndroidManifest.xml... Permission: android.permission.INTERNET Debuggable: False AllowBackup: False Custom schemas: None Set debuggable attribute to true in AndroidManifest! Set networkSecurityConfig attribute to true in AndroidManifest! Building APK by Apktool... I: Using Apktool 2.4.1 I: Checking whether sources has changed... ... Signing APK by apksigner... Signed Output: sample.patched.apk
ä¸ã§æããapk-meditã¯debuggable屿§ãtrueã«ãªã£ã¦ããã¢ããªãåæã«ä½ããã¦ããã®ã§ãapk-meditã使ãéã«ã¯ã¨ã¦ã便å©ã§ãã
ipautil
ipautilã¯ãIPAãã¡ã¤ã«ããã³ã¼ãããéã«Info.plistããã¼ã¹ãæ§ã ãªæ å ±ã表示ããããã»ã³ã·ãã£ããªãã¡ã¤ã«ããªãã確èªããããã¦ããããã¼ã«ã§ãã
次ã®ããã«ã³ãã³ããå®è¡ãããã¨ã§ãIPAãã¡ã¤ã«ããã³ã¼ãã§ãã¾ãã
$ ipautil decode sample.ipa Decoding IPA... Archive: sample.ipa creating: Payload/ creating: Payload/demo-client iOS develop.app/ creating: Payload/demo-client iOS develop.app/_CodeSignature/ inflating: Payload/demo-client iOS develop.app/_CodeSignature/CodeResources inflating: Payload/demo-client iOS develop.app/demo-client iOS develop ... inflating: Payload/demo-client iOS develop.app/Info.plist CFBundleName: demo-client iOS develop CFBundleDisplayName: demo-dev Checking AppTransportSecurity... True NSExceptionDomains: facebook.com Custom schemas (CFBundleURLSchemes): None Potentially Sensitive Files: ./Payload/demo-client iOS develop.app/README.md ./Payload/demo-client iOS develop.app/hoge.sh Output: ./Payload
ã¾ããIPAãã¡ã¤ã«ã¯ãããå½ã¦ãå¾ããªã¶ã¤ã³ããªãã¨ã¤ã³ã¹ãã¼ã«ã§ãã¾ãããããªã¶ã¤ã³ã¯çµæ§æéã§ãã
~/ipautil.jsonã«è¨¼ææ¸ã®æ
å ±ãæ¸ãã¦ãããã¨ã§ãã³ãã³ã1çºã§ãªã¶ã¤ã³ããæ©è½ãããã¾ãã
$ ipautil sign Payload/ Signing IPA by codesign... Payload/demo-client iOS develop.app/Frameworks/Hoge.framework: replacing existing signature Payload/demo-client iOS develop.app/Frameworks/Fuga.framework: replacing existing signature Payload/demo-client iOS develop.app: replacing existing signature Signed
NWPentestUtils
NWPentestUtilsã¯ãå é¨ãããã¯ã¼ã¯ã§ã®ãããã¬ã¼ã·ã§ã³ãã¹ãæ¥åã§ä½¿ç¨ãã¦ããã¹ã¯ãªããéã§ãã
DBãµã¼ãã¼ãæå®ãããããã¯ã¼ã¯ã¬ã³ã¸ããè¦ã¤ããfind-db.shããã«ã¼ããã©ã¼ã¹æ»æãè¡ãbruteforce-postgres.shãbruteforce-mysql.shãbruteforce-redis.shãããã¯ç¹ã«ãæ°ã«å
¥ãã§ãã
$ ./find-db.sh target-ip.txt Target: 192.168.100.0/24 172.16.0.0/12 Now Launching: nmap -p3306 -v -oX results/20201221/192.168.100.0_24_mysql_20201221_140057.xml 192.168.100.0/24 Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-21 14:00 JST Initiating Ping Scan at 14:00 Scanning 512 hosts [2 ports/host] ... Read data files from: /usr/local/bin/../share/nmap Nmap done: 512 IP addresses (9 hosts up) scanned in 34.01 seconds Now Launching: nmap -p5432 -v -oX results/20201221/192.168.100.0_24_postgre_20201221_140131.xml 192.168.100.0/24 Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-21 14:01 JST Initiating Ping Scan at 14:01 Scanning 512 hosts [2 ports/host] Completed Ping Scan at 14:01, 14.59s elapsed (512 total hosts) Initiating Parallel DNS resolution of 9 hosts. at 14:01 Completed Parallel DNS resolution of 9 hosts. at 14:01, 11.03s elapsed ...
DBãµã¼ãã¼ã«ãã°ã¤ã³ã§ããå ´åãRCEã«ã¾ã§æã¡è¾¼ããã±ã¼ã¹ãããã¾ãã
ã¾ããNmapãåºåããXMLãã¡ã¤ã«ãã¹ãã¬ããã·ã¼ãã«ã³ãã¼ããããããCSVå½¢å¼ã«å¤æããnmap-xml2csv.rbã¯å°å³ã«ä¾¿å©ã§ãã
$ ruby nmap-xml2csv.rb ./results/20201204/192.168.1.0_24_20201204_072122.xml [+] parse these xml files: ./results/20201204/192.168.1.0_24_20201204_072122.xml ----------------------------------------------------- 192.168.1.1 53(domain), 80(http) 192.168.1.17 22(ssh) ----------------------------------------------------- [+] Output: portscan-result.csv
ãããã«
aproxã¨ããæè¿ä½æãããã¼ã«ã®ç´¹ä»ã¨ãä»ã¾ã§ã«ä½æãããã¼ã«ã®ç´¹ä»ããã¾ããã ã¢ã«ããã®ã»ãã¥ãªãã£ãã¼ã ã§ã¯èå¼±æ§è¨ºæããã åã«è¡ãã ãã§ã¯ãªããå¹çããè¡ãããã®ãã¼ã«ã®ä½æãç©æ¥µçã«è¡ããOSSã¨ãã¦å ¬éãããã¨ã§æ¥çã«è²¢ç®ãã¦ããå§¿å¢ãã¨ã£ã¦ãã¾ãã
ä¸ç·ã«èå¼±æ§è¨ºæããã¼ã«éçºãè¡ãããæ¹ã¯ããã²æ¡ç¨ãã¼ã¸ããå¿åãã¦ãã ããããå¾ ã¡ãã¦ãã¾ãã