内网渗透基础

内网就是局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。
外网就是广域网。广域网(英语:Wide Area Network,缩写为 WAN),又称外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。

内网渗透分为域渗透和工作组渗透两类,亦分为域环境渗透和非域环境渗透。在内网中会出现许多名词和概念,如工作组、域、活动目录、域控、安全域、域权限等等。

工作组

工作组简单理解就是根据工作特性不同而划分的计算机组。在一个局域网中,不同的计算机可以按照功能或部门的不同列入不同的工作组

域(DOMAIN)为了解决工作的不方便性,提出了域这个概念。域是一个有安全边界的计算机集合(安全边界的意思是:在两个域中,一个域中的用户无法访问另一个域中的资源)。可以简单地把域理解成升级版的工作组,与工作组相比,域的安全管理控制机制更加严格,用户要想访问域内的资源,必须以合法的身份登陆域,而用户对域内的资源拥有什么样的权限,还取决于用户在域内的身份;域控DOMAIN CONTROL

多域和单域:通常在一个地理位置固定的小公司里,建立一个域就可以满足需求,在一个域内,一般要有至少两台域服务器,一台作为DC,另一台作为备份DC;多域就是说有多个域环境,每个域都有自己的DC(和备用DC)

父域和子域:出于管理及其他需求,需要在网络中划分多个域,第一个域称为父域,各部分的域称为该域的子域。父域:abc.com;子域:yunwei.abc.com

域树:(由多个父域和子域组成的更大的域)域树是多个域通过建立信任关系组成的集合,一个域管理员只能管理本域,不能访问或者管理其他域,如果两个域之间需要互相访问,则需要建立信任关系,信任关系是连接不同域的桥梁;域树内的父域和子域不但可以按照需要互相管理、还可以跨网络分配文件和打印机等设备及资源,从而在不同的域之间实现网络资源的共享与管理、通信及数据传输。

域森林:多个域树通过建立信任关系组成的几个,例如,一个公司兼并场景(例如一个公司收购另一个公司)中某公司使用域树abc.com,被兼并的公司本来有自己的域树abc.net,域树abc.net无法挂在域树abc.com下(是否是同一域树中,主要看域名最后一位,即顶级域名),所以,域树abc.com域域树abc.net之间需要通过建立信任关系来构成域森林;通过域树之间的信任关系,可以管理和使用整个域森林中的资源,并保留被兼并公司自身原有的属性。

DC域控:通常在一个地理位置固定的小公司里,建立一个域就可以满足要求,在一个域内,一般要有至少两台域服务器,一台作为DC,另一台作为备用DC;内网渗透的目标就是控制DC。

域环境搭建:通常所说的内网渗透测试,很大程度上就是域渗透测试,搭建域渗透测试环境很重要。

AD活动目录(Active Directory):

活动目录AD指域环境中提供目录服务的组件,目录用于存储有关网络对象,例如用户、组、计算机、共享资源、打印机和联系人等信息,目录服务指帮助用户快速准确地从目录中找到其所需要的信息的服务,活动目录实现了目录服务,为企业提供了网络环境的集中式管理机制(还能进行统一的分发账号、统一地网络推送,统一进行安装)。
活动目录的主要功能:
计算机集中管理:集中管理所有加入域的服务器及客户端计算机,统一下发组策略
用户集中管理:集中管理域用户,组织通讯录、用户组,对用户进行统一的身份认证,资源授权等。
资源集中管理:集中管理域中的打印机,文件共享服务等网络资源
环境集中配置:集中的配置域中计算机的工作环境,如统一计算机桌面,统一网络连接配置,统一计算机安全配置等
应用集中管理:对域中的计算机统一推送软件,安全补丁,防病毒系统,安装网络打印机等
Ntds.dit 文件是域环境的域控制器上保存的一个二进制文件,是主要的活动目录数据库,其文件的路径为“%SystemRoot%\ntds\ntds.dit".
非域环境即工作组环境中,用户的登录凭据等信息存储在本地SAM文件中。

域分区

域分区(Domain NC)用于存储与该域有关的对象信息,这些信息是特定于该域的。如:域中计算机,用户,组,组织单位等信息。
在域林中,每个域的域控制器各自拥有一份属于自己的域分区,只会被复制到本域的所有域控制器中。
域分区主要包括以下:
CN=Builtin:内置了本地域组的安全组的容器。
CN=Computers:机器用户容器,其中包含所有加入域的主机。
OU=Domain Controllers:域控制器的容器,其中包含域中所有的域控制器
CN=ForeignSecurityPrincipals:包含域中所有来自域的林外部域的组中成员
CN=Managed Service Accounts:托管服务账户的容器
CN=System:各种预配置对象的容器,包含信任对象、DNS对象和组策略对象。
CN=Users:用户和组对象的默认容器。

配置分区(Configuration NC)存储整个域林的主要配置信息,包括有关站点、服务、分区和整个活动目录结构的信息。
整个域林共享一份想听的配置分区,会被复制到域林中所有的域控制器上。
架构分区(Schema NC)存储整个域林的架构信息,包括活动目录中的所有类,对象和属性的定义数据。
整个域林共享一份相同的架构分区,会被复制到林中所有域的域控制器中。

组织单元OU:

OU是域中包含的一类目录对象,如用户、计算机和组、文件与打印机等资源,是一个容器,可以在OU上部署组策略(即在DC域控abc.com中的AD功能下的文件夹),实际工作中,需要根据公司需求进行分OU。

信任关系:

域是安全边界,若无信任关系,域用户账户只能在本域内使用,信任关系在两个域之间架起了一座桥梁,使得域用户账户可以跨域使用(abc.com和xyz.com如果有信任关系,则两个域之间可以互相访问)。信任关系分为可传递的和不可传递的。可传递:如果A域和B域之间的信任是可传递的,B域和C域之间的信任也是可以传递的,那么A域和C域之间就自动创建了信任关系;不可传递:如果A域和B域之间的信任是不可传递的,或者B域和C域之间的信任是不可传递的,那么A域和C域之间不会自动创建了信任关系。
单向信任:在两个域之间创建的单向信任,这表示在A域和B域之间的单向信任中:A域中的用户可以访问B域中的资源,B域中的用户无法访问域A中的资源;单向信任可以是不可传递信任,也可以是可传递信任,这取决于创建的信任类型。
双向信任:(默认)林(域树)中的所有域信任都是双向的、可传递的信任,创建新的子域时,系统将在新的子域和父域之间自动创建双向可传递信任,在双向信任中,A域信任B域,并且B域信任A域,这表示可以在两个域之间双向传递身份验证请求。
内外部信任(需要根据不同域的信任关系进行后续的攻击):内部信任是指在同一个域树的域之间的信任关系,这种信任关系是可传递的。外部信任是指不同域树之间的域信任关系,这种信任关系是单向的或者不可传递的(即一个父域是不可以和另一个父域的子域建立信任传递关系的)。

工作组权限、域内权限

1、本地用户组:
电脑的身份就两种,一种是本地工作,第二种是域,我们默认的电脑都是本地组的形式,本地工作组的电脑,所有的账号密码、群组等都存放在本地的电脑文件中,不管电脑有没有网络,只要能开机,我们输入本地的账号密码都可以登录到电脑。在电脑中一般有两种角色,一个是用户一个是组,一个组中可以有多个用户,一个用户可以属于多个组,通过给组划分不同的权限,用户就有了不同的权限(即用户一定是属于某一个组的,可能组中只有一个用户)。

2、本地最高管理员权限:
administrator是计算机中的管理员(最高级管理员),administrator用户在家庭版电脑中是属于禁用的状态,在专业版中属于开启的状态,在server机器中数据开启;administrator用户的SID最后一位是500;administrator用户默认在administrator组中。

3、本地普通管理员权限:
本地一般管理员就是加入了administrator组的管理员,但不是administrator用户;admin用户虽然也是管理员,但是有些操作是执行不了的,因为有UAC,如果要执行高权限的操作,必须用管理员身份打开cmd。

4、本地普通用户:
就是在windows电脑中本地新建的普通用户,没有管理员的权限,一般本多操作执行不了,需要管理员认证后才可以执行;当进行高权限操作的时候需要输入管理员的账号和密码才行。

5、UAC认证:
USER ACCOUNT CONTROL,用户账户控制,主要功能是进行一些会影响系统安全的操作时,会自动触发UAC,用户确认后才能执行,因为大部分的恶意软件、木马病毒、广告插件在进入计算机时都会告知一些操作,而这些操作都会触发UAC,用户可以在UAC提示时来禁止这些程序的运行。凭据提示当标准用户尝试执行需要用户管理访问令牌的任务时,会显示凭据提示,即要输入admin的账号和密码(在普通用户界面进入admin管理员系统就需要利用漏洞了)。

6、本地系统最高权限(system):
system在windows中主要作为系统服务或进程的运行账户(主要运行服务和进程, 查看系统进程可以在任务管理器中看到);admin和sys权限的区别:并不是说sys比admin的权限大,这两个用户的区别是,admin是系统内置的管理员用户,一般平时安装、运行程序、修改系统设置等都是以这个权限身份运行的;sys权限是系统本身的权限,控制任务管理器中的进程,另外注册表里面某些地方只有系统自己可以访问,admin用户也不能访问(简单来说,sys是系统内部本身,admin是系统内置的用户,可以使用令牌进行admin和sys的切换,从本质上来说,admin和sys没有什么区别)。

7、域内机器权限(利用域控DC设置域内用户的账号和密码):
域内用户组:
机器加入到域,使用域内的用户进行登录,域内用户的信息是存放在域控DC上,添加用户或者修改密码都是在域控DC上进行(创建用户和删除用户也是在DC上进行)。
域内用户组介绍:管理员组administrators的成员可以不受限制地存取计算机/域的资源,它不仅是最具权力的一个组,也是在AD和DC中默认具有管理员权限的组,该组的成员可以更改Enterprise Admins、Domain admins组的成员关系,是域森林中强大的服务管理组。
域管理员组Domain Admins:
是指定的域管理员,拥有完整的管理员权限,因为该组会被添加到自己所在域的Administrators组中,因此可以继承Administrator组的所有权限,同时该组默认会被添加到每台域成员计算机本地的administrators组中,这样Domain admins组就获得了域中所有计算机的所有权(在加入到域中的成员电脑中,会自动进入域Domain Admins组中,当然它同时也在administrators组中)。
当一个用户例如2008-PC加入了域之后,它有三个管理员:即它本地的administrator、还有域控DC上的administrator、还有域控DC上的2008-PC,以上三个都是它的管理员,而在DC上的2008-PC是2008-PC主机的普通管理员,其他两个都是这主机的最高管理员。
如果想添加一个域管理员,就要添加到Domain Admins组中,这样添加的管理员可以控制域中的所有主机,而如果添加进域控DC的Administrators组中,他只是域控DC的管理员而已。
企业系统管理员组Enterprise Admins是域森林或者根域中的一个组,该组在域森林中的每个域都是Administrators组的成员,因此对所有域控DC都有完全访问权(即Enterprise Admins组中的成员是继承了Administrators组的性质),企业管理中如果需要只添加域控制器的管理员,则只需要将添加的用户添加进Enterprise Admins组中即可(即新添加的用户只是域控DC的管理员,而不是域内所有用户的管理员)。
域用户组Domain users是所有的域成员,在默认情况下,任何由本地建立的用户账号都属于Domain Users组,该组在域内及其中存在于Users组(如果在域控SERVER2012中新添加了用户,那么该用户就可以登录进SERVER2012的系统中,因为新用户是Domian Users组中的成员,但是身份只是user)。
域电脑组:
Domain Computers组,任何由本地建立的计算机账号都属于该组(可以是工作站或者是服务器)。
加入到域之后,可以选择使用域内用户登录,也可以使用本地用户登录,注意以下区别:本地用户登录,是存放在本地文件中然后本机进行校验,域内用户登录是要通过DC域控的认证之后才能登录, 用户信息存放在域控上;本地用户登录主要是对比NTLM HASH值,域认证是通过kerberos认证;机器可以选择本地登录或者域用户登录,本地用户是机器名/用户名、域内用户是:域名/用户名(例如本地机器2008-PC想用admin身份登录,可以在登录界面输入2008-PC\administrator用户名,再输入密码即可;如果想以域内用户的admin身份登录该机器,例如登录abc域,则用户名为abc\administrator,再输入密码即可;在做渗透时,一定需要注意区分域用户和本地用户)。
Domain Admins组实际上就是域内的管理员账号存在的组。

8、域内最高管理员权限:
域名\administrator(域控DC的管理员),它没有UAC认证,SID尾部号为500,它是每个域内及其的本地管理员(默认的),和机器名\administrator(加入域内机器的管理员)具有相同的权限(例如使用200-PC机器,域控DC的admin身份登录,则在2008-PC机器的登录界面,使用adc\administrator用户名,再输入密码即可),以上操作的前提是,处于同一个内网(局域网LAN)中,且通过内网配置,有主要负责的域控,且该域中的计算机都加入了该域,就可以使用其他主机登录域控DC账号进行相应操作。

9、域内普通管理员:
可通过在计算机管理中进入用户界面(或者进入administrators组中也可以进行添加admin用户),将该用户隶属于添加进administrators组中,则该用户(例如jack)即成为本地的普通管理员(如果是域内普通管理员,绕过UAC是简单的)。

10、域内普通用户权限:
如果本地机器被域控DC添加进了administrators组中,那么,在该机器内的用户若想通过UAC认证,则可以分别使用本地的admin账号密码,也可以使用域的admin账号密码。
域用户组Domain Users中所有的域成员,在默认情况下,任何由本地建立建立的用户账号,都属于Domain Users组,该组在域内机器中,存在于Users组。

11、机器(本地)用户和SYSTEM关系:
Domain Computers组,任何由本地建立的计算机账号都属于该组,机器账户是指在网络中用于代表计算机或设备的账户,在windows域环境中,每台计算机都有一个机器账户,用于在网络中进行身份验证和授权,机器账户的名称通常以计算机名称或者计算机GUID作为前缀,如2008-PC$,机器账户与具体计算机相关联,用于代表计算机进行与认证和访问资源。
当电脑加入域中后,机器账号的密码同步到域控上,所以说本地system用户对应域内的机器用户,如果说渗透的电脑加入了域,但是使用本地用户进行登录,就可以提权到system用户。然后对域内进行查询;虽然sys用户是本地计算机上的特殊账户,而机器账户是域环境中的账户,但在某些情况下,例如本地计算机需要访问域资源时,system用户可能会充当机器账户的角色,这是因为在域环境中,本地计算机可以使用sys账户作为其身份进行域认证和访问授权,但是,他们仍然是两个不同的概念,sys账户不是专门为域中的机器账户而创建的(即sys账号可以代表本地机器账号进入到域中进行查询)。
使用域控DC创建的用户登录时,用户身份是域用户,而不是本地用户(前提是,登录账户的时候,是登录进abc域中),所以,当本地机器是在域中的,但是所登录的用户不是sys权限,例如还想进行net user /domian命令等,就需要使用incognito工具,使用sys令牌,进行提权至sys权限(首先保证incognito工具在桌面上,然后cd进入desktop,在\Desktop位置下输入命令为:incognito.exe list_tokens -u, 目的是列出当前状态下,用户有什么令牌,例如,如果用户有NT AUTHORITY\SYSTEM令牌的话,则需要输入:incognito.exe execute -c “NT AUTHORITY\SYSTEM”,执行完毕之后就可以进入SYS权限)。

本地认证

windows本地认证:电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证(最简单的本地认证可以是电脑认证登录的账号和密码)。
电脑开机winlogon.exe–账号密码–>Lsass.exe进程–和SAM文件密码做对比–>SAM文件(进入输入密码的页面是由winlogon.exe进程控制的,winlogon.exe是在系统底层自动运行的进程,它是由system系统用户运行的),在开机页面的winlogon中由用户输入的密码是明文的,此时明文的密码会提交到Lsass进程,Lsass进程也是由system权限运行的,Lsass进程将明文的密码去到SAM文件进行对比,SAM文件就是存储电脑本机账号密码,如果对比成功,则登录成功(这个是非常简单的本地认证,此认证是发生在本地上的)。
winlogon.exe:全称是Windows Logon Process,是windows NT用户登录程序,用于管理用户登录和退出,用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登录界面。
Lsass.exe是一个系统进程,用于微软windows系统的安全机制,它用本地安全和登录策略。
SAM文件是位于C\windows\system32\config\目录下的,用于存储本地所有用户的凭证信息,但是这并不代表可以随意去查看系统密码,作为普通用户,不能删、不能改、不能看、不能复制。
SAM文件和Lsass.exe进程详解:SAM文件是windows的用户账户数据库,所有用户的登录名及口令等相关信息都会保存在这个文件夹,SAM文件的内容(如下):
用户名称:LM-HASH值:HTLMN-HASH值。SAM文件中的密码并不是以明文的形式存在,它是加密后存储在SAM文件中(例如:administrator:LM-HASH:NTLM-HASH),SAM文件中的账号名称是以明文形式存在,例如administrator。Lsass.exe进程的作用非常重要,它主要负责管理本地安全策略和认证机制,这些策略包括密码策略、账户策略、用户权限、域策略等等,同时,它还负责对用户进行身份验证,以确保只有授权的用户才能访问系统资源;Lsass.exe将winlogon传过来的明文账号密码进行加密(其中使用的是MTLM或者LM加密),然后和SAM文件中的密文账号密码作对波比,如果对比成功就登录成功;Lsass.exe将收到的明文账号密码在本地内存中保留一份作备用(留存的一份是明文的密码),(Lsass.exe进程,总共进行两个操作,一是先将明文密码进行加密,二是在内存中保留一份作为备用),当然和SAM文件中的密码进行对比的时候,也会有成功或者失败两种情况。
LM-HASH值介绍:windows系统通常使用两种方法对用户的明文密码进行加密处理,一部分为LM-HASH,另一部分为NTLM-HASH,在windows系统中,HASH的结构通常如下:
username:RID:LM-HASH:NTLM-HASH
LM-HASH的全名为LAN Manager Hash,是微软为了提高windows系统的安全性而采用的散列加密算法,其本质是DES加密(对称加密,非常好破解),尽管LM-HASH较容易被破解,但为了保证系统的兼容性,windows只是将LM-HASH禁用了(现在的版本已经被禁用,2008版本以后才禁用,所以windows xp 2003使用的还是LM-HASH),LM-HASH明文密码被限定在14位以内,也就是说,如果要停止使用LM-HASH,将用户的密码设置为14位以上即可,如果LM-HASH被禁用了,攻击者通过工具抓取的LM-HASH通常为“aad3b435b51404eead3b435b51404ee”(aa开头、ee结尾,代表这个电脑的LM-HASH被禁用)(表示LM-HASH为空值或被禁用),NTLM-HASH是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法,NTLM-HASH是基于MD4加密算法(非对称加密,即便得到了NTLM-HASH值,破解也是非常困难)进行加密的,现在的windows系统基本都采用NTLM-HASH加密(最早使用的是LM,但是发现了并不安全,就研发出来了NTLM-HASH,微软为了保证电脑都支持,即考虑到兼容性,所以LM和NTLM都支持)NTLM是从vista后的版本,即win7开始使用的。
NTLM-HASH是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法,NTLM-HASH是基于MD4加密算法进行加密的,是从个人版windows vista版本以后、服务器版从windows server 2003以后,认证方式均为HTLM-HASH
本地认证中的安全问题:(问题: 如果我是渗透人员,如何知道对方的账号和密码?内存中存储密码很不安全,且微软肯定会修复,那如何拿到win10之类的明文账号密码?能不能通过输入HASH)
如果想修改密码,则利用U盘启动,进入PE模式后,将SAM文件修改或替换(或者利用工具直接将SAM文件的值修改)。
2012之后版本的机器怎么抓明文密码:可以通过修改注册表的方式重新存储明文密码。
可以通过HASH值的对比进行破解;拿到了一串HASH值,也可以通过撞库的方式破解

网络认证

用户名和密码认证:最常见的认证方式,用户需要提供有效的用户名和密码,以验证其身份(适用于本地计算机或域账户);
kerberos认证:网络身份验证协议,在windows域环境中广泛使用,通过使用票据和票据授予票证TGT来验证用户身份,并生成会话密钥用于加密通信;
NTLM认证:windows网络认证协议,基于挑战——响应的方式进行身份验证,尽管keberos已成为首选的认证协议,但NTLM仍然在某些情况下使用,特别是在与旧版windows系统或非windows系统进行互操作时;
密钥身份认证:windows还支持使用密钥来进行身份验证,即使用预先共享的密钥对用户进行身份验证;
远程桌面认证:通过远程访问windows计算机,用户需要提供目标计算机的凭据进行认证,以验证身份并获得远程访问权限。
如果主机A想要访问主机B上的资源,就要向B发送一个存在于B上的一个账户,B接收以后,会在本地进行验证,如果验证成功,才会允许主机A进行相应的访问。

域kerberos认证

kerberos:erberos是一种网络认证协议,其设计目标是通过密钥系统为server和client应用程序提供强大的认证服务;认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传输的数据包可以被任意地读取、修改和插入数据,在以上情况下,kerberos作为一种可信任的第三方认证服务,通过传统的密码技术(共享密钥)执行认证服务(即kerberos是纯第三方认证服务,服务于server和client;重点是密钥系统)。
kerberos协议角色组成:存在三个角色,client、server、KDC(key distribution ceter密钥分发中心),密钥分发中心分为两部分,即AS(Authemtication认证服务器,专门用来认证客户端的身份,并发放给客户用来访问
kerberos协议认证流程:(网络认证中存在的不足:机器陷入无法证明自己是自己的困境)
KDC类似于票据中心,是client和server之间的桥梁(最大问题是KDC为什么给client提供Ticket),AS类似于安检窗口(用来认证身份),TGS类似于卖票窗口(用来提供票据)(顺序是client-AS-client-TGS-client-server)。
client带着自己的身份去AS认证,认证通过后返回一个去TGS的票(TGT);client带着TGT去取ST(client带着能买ST的票去买ST);client带着ST去server。
KDC通常在域控上(DC)(即DC通常扮演着KDC的角色)。

安全域的划分

安全域的划分
1.内网(安全级别最高):分为核心区(存储企业最重要的数据,只有很少的主机能够访问)和办公区(员工日常工作区,一般能够访问DMZ,部分主机可以访问核心区)
2.DMZ(Demilitarized Zone,边界网络,隔离区,安全级别中等):作为内网中安全系统和非安全系统之间的缓冲区,用于对外提供服务,一般可以放置一些必须公开的服务器设施
3.外网(Internet,安全级别最低)
拥有DMZ的网络需要制定一些访问控制策略:
内网可以访问外网
内网可以访问DMZ
外网不能访问内网
外网可以访问DMZ
DMZ不能访问内网
DMZ不能访问外网

内网渗透基本流程

Step1、信息收集
Step2、获取权限
Step3、横向移动
Step4、权限维持
Step5、清理痕迹

参考网页:https://blog.csdn.net/weixin_46364913/article/details/125908595
https://blog.csdn.net/weixin_46398572/article/details/133022384

posted on 2024-07-11 11:45  m0userathxy  阅读(6)  评论(0编辑  收藏  举报