内网渗透基础知识
0x01 一些名词概念
1.1、工作组
工作组是一个由许多在同一物理地点,而且被相同的局域网连接起来的用户组成的小组。相应地,一个工作组也可以是遍布一个机构的,但却被同一网络连接的用户构成的逻辑小组。在以上两种情况下,在工作组中的用户都可以以预定义的方式,共享文档、应用程序、电子函件和系统资源。
在默认情况下,局域网内的计算机都是采用工作组方式进行资源管理的,即处在名为WORKGROUP的工作组中 。
1.2、域(Domain)
域(Domain):域是一个有安全边界的计算机集合(**安全边界的意思是在两个域中,一个域的用户无法访问另一个域中的资源**)。域(Domain)是一种比工作组更高级的计算机资源管理模式,既可以用于计算机数量较少的小规模网络环境,也可以用于计算机数量众多的大型网络环境。
域环境中,
- 所有用户账户、用户组、计算机、打印机和其他安全主体都在一个或多个域控制器的中央数据库中注册。
- 当域用户需要想访问域中的资源时,必须通过域控制器集中进行身份验证。
- 而通过身份验证的域用户对域中的资源拥有什么样的访问权限取决于域用户在域中的身份。
- 在域环境中,域管理员用户是域中最强大的用户,在整个域中具有最高访问权限和最高管理权限,可以通过域控制器集中管理组织中成千上万台计算机网络资源,所以在实际渗透过程中,能获得域管理员相关权限往往可以控制整个域控。
注意: 域是windows下的一种统一化管理的方式,一个电脑可以用多个账号登录,并且还可以本地用户和域用户两种方式登录,没有域环境和有域环境的认证方式不同
1.2.1、域控制器(Domain Controller,DC)
域控制器(Domain Controller,DC)是域中的一台类似管理服务器的计算机,域控制器负责所有连入计算机和用户的验证工作,域控制器是整个域的通信枢纽,所有的权限身份验证都在域控制器上进行。
1.2.2、单域
通常在一个地理位置固定的小公司里,建立一个域就可以满足需求。在一个域中,一般要有至少两台域服务器,一台作为DC(父域),另一台作为备份DC(辅域)。
1.2.3、父域和子域
出于管理及其他需求。需要在网络中划分多个域。第一个域称为父域,各分部的域称为该域的子域。
1.2.4、域树
域树(Tree)是多个域通过建立信任关系组成的集合。一个**域管理员只能管理本域,不能访问或者管理其他域。** 域树中域的命名空间具有连续性,并且域名层次越深,级别越低。
1.2.5、域森林
域森林(Forest)是指多个域树通过建立信任关系组成的集合。 **域森林中的所有域树仍共享同一个表结构**
**配置和全局目录。 **
1.2.6、域名服务器DNS
域名服务器(Domain Name Server,DNS)是指用于实现域名和与之相对应的IP地址转换的服务器,在内网渗透中,大都是通过寻找DNS服务器来确定域控制器的位置的(**DNS服务器和域控制器通常配置在同一台机器上**)。
1.3、 活动目录AD
活动目录(Active Directory, AD)是指安装在域控制器(DC)上,为整个域环境提供集中式目录管理服务的组件。活动目录存储了有关域环境中各种对象的信息,如域、用户、用户组、计算机、组织单位、共享资源、安全策略等。目录数据存储在域控制器的Ntds.dit文件中。活动目录主要提供了以下功能。
计算机集中管理: 集中管理所有加入域的服务器及客户端计算机,统一下发组策略。
用户集中管理: 集中管理域用户、组织通讯录、用户组,对用户进行统一的身份认证、资源授权等。
资源集中管理: 集中管理域中的打印机、文件共享服务等网络资源。
环境集中配置: 集中的配置域中计算机的工作环境,如统一计算机桌面、统一网络连接配置,统一计算机安全配置
应用集中管理:对域中的计算机统一推送软件、安全补丁、防病毒系统,安装网络打印机等。
1.4、域控制器(DC)和活动目录(AD)的区别
1、如果网络规模较大,就要把网络中的众多对象,例如计算机、用户、用户组、打印机、共享文件等,分门别类、井然有序地放在一个大仓库中,并将检索信息整理好,以便查找、管理和使用这些对象(资源)。这个拥有层次结构的数据库,就是活动目录数据库,简称AD库
2、那么,我们应该把这个数据库放在哪台计算机上呢?要实现域环境,其实就是要安装 AD,如果内网中的一台计算机上安装了 AD,它就变成了DC(用于存储活动目录数据库的计算机)。
3、回顾前面的一个应用场景,在域环境中,只需要在活动目录中创建 Alan账户一次,就可以在200台计算机中的任意一台上使用该账户登录;如果要更改Alan账户的密码,只需要在活动目录中更改一次就可以了
1.4、Ntds.dit文件
Ntds.dit文件是域环境的域控制器上保存的一个二进制文件,是主要的活动目录数据库,其文件路径为域控制器的“%SystemRoot%Intds\ntds.dit"。Ntds.dit 文件中包括但不限于有关域用户、用户密码的哈希散列值、用户组、组成员身份和组策略的信息。Ntds.dit文件使用存储在系统SYSTEM文件的密钥对这些哈希值进行加密。
注意:而在非域环境即工作组环境中,用户的登录凭据等信息存储在本地SAM文件中。路径为:“C:\WINDOWS\system32\config”
1.6、DMZ
DMZ称为”隔离区“,也称”非军事化区“。为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。DMZ区通常 位内部网络和外部网络之间的小网络区域内,DMZ区中通常部署一些公开的服务,如企业Web、FTP服务器等。
1.7、域内成员划分
- 域控制器:域控制器用于管理所有的网络访问,包括登录服务器、访问共享目录和资源。域控制器中存储了域内所有的账户和策略信息,包括安全策略、用户身份验证信息和账户信息,一个网络中可以有多台域控
- 成员服务器:成员服务器是指安装了服务器操作系统并加入了域、但没有安装活动目录的计算机,其主要任务是提供网络资源
- 客户机:域中的计算机可以是安装了其他操作系统的计算机,用户利用这些计算机和域中的账户就可以登录域
- 独立服务器:独立服务器和域没有关系。如果服务器既不加入域,也不安装活动目录,就称其为独立服务器。独立服务器可以创建工作组、与网络中的其他计算机共享资源,但不能使用活动目录提供的任何服务
0x02 常见端口与对应服务和可能漏洞
| 端口号 | 端口说明 | 可能漏洞 |
|------- |-------- |-------- |
|21/22/69 |ftp/tftp:文件传输协议 |爆破\嗅探\溢出\后门|
|22 |ssh:远程连接 |爆破OpenSSH;28个退格|
|23 |telnet:远程连接 |爆破\嗅探|
|25 |smtp:邮件服务 |邮件伪造|
|53 |DNS:域名系统 |DNS区域传输\DNS劫持\DNS缓存投毒\DNS欺骗\利用DNS隧道技术刺透防火墙|
|67/68 |dhcp |劫持\欺骗|
|110 |pop3 |爆破|
|139 |samba |爆破\未授权访问\远程代码执行|
|143 |imap |爆破|
|161 |snmp |爆破|
|389 |ldap |注入攻击\未授权访问|
|445 |SMB |远程代码执行|
|512/513/514 |linux r|直接使用rlogin|
|873 |rsync |未授权访问|
|1080 |socket |爆破:进行内网渗透|
|1352 |lotus |爆破:弱口令\信息泄漏:源代码|
|1433 |mssql |爆破:使用系统用户登录\注入攻击|
|1521 |oracle |爆破:TNS\注入攻击|
|2049 |nfs |配置不当|
|2181 |zookeeper |未授权访问|
|3306 |mysql |爆破\拒绝服务\注入|
|3389 |rdp |爆破\Shift后门|
|4848 |glassfish |爆破:控制台弱口令\认证绕过|
|5000 |sybase/DB2 |爆破\注入|
|5432 |postgresql |缓冲区溢出\注入攻击\爆破:弱口令|
|5632 |pcanywhere |拒绝服务\代码执行|
|5900 |vnc |爆破:弱口令\认证绕过|
|6379 |redis |未授权访问\爆破:弱口令|
|7001 |weblogic |Java反序列化\控制台弱口令\控制台部署webshell|
|80/443/8080 |web |常见web攻击\控制台爆破\对应服务器版本漏洞|
|8069 |zabbix |远程命令执行|
|9080 |websphere |远程命令执行|
|9090 |websphere控制台 |爆破:控制台弱口令\Java反序列|
|9200/9300 |elasticsearch |远程代码执行|
|11211 |memcacache |未授权访问|
|27017 |mongodb |爆破\未授权访问|
0x03 常用命令附录表
netstat -ano 显示本机的IP和端口号,通信对象的IP地址和端口号
nmap -sU --script nbstat.nse -p137 c段 -T4 使用nmap进行存活主机探测
net user 查看本机用户列表
net localgroup administrators 本机管理员
query || qwinsta 查看当前在线用户
ipconfig /all 查看本机ip,所在域
route print 打印路由信息
net view 查看局域网内其他主机名
arp -a 查看arp缓存
net start 查看开启了哪些服务
net share 查看开启了哪些共享
net share ipc$ 开启ipc共享
net share c$ 开启c盘共享
net use \\192.168.xx.xx\ipc$ "" /user:"" 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" 建立c盘共享
dir \\192.168.xx.xx\c$\user 查看192.168.xx.xx c盘user目录下的文件
net config Workstation 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user 查看本机用户列表
net user /domain 查看域用户
net localgroup administrators 查看本地管理员组(通常会有域用户)
net view /domain 查看有几个域
net user 用户名 /domain 获取指定域用户的信息
net group /domain 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain 查看域中某工作组
net group "domain admins" /domain 查看域管理员的名字
net group "domain computers" /domain 查看域中的其他主机名
net group "doamin controllers" /domain 查看域控制器(可能有多台)
netstat -ano | find "3389" 查看3389端口是否开启,若开启可以尝试远程桌面登录(Windows)
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 用于开启远程桌面登录
netsh firewall show config 查看防火墙状态
关闭防火墙
netsh firewall set opmode disable Windows Server 2003 系统及之前版本
netsh advfirewall set allprofiles state off Windows Server 2003 之后系统版本
mstsc 远程桌面连接
命令 | 说明 |
---|---|
net dclist | 查看目标所在域的域控 |
net view | 查看目标所在域的域内目标 |
net user admin 123456 /add | 添加账号为admin,密码为123456的账号 |
net localgroup administrators admin /add | 将admin添加到管理员组 |
ipconfig /all | 查看本机ip,所在域 |
arp -a | 查看arp缓存 |
net start | 查看开启了哪些服务 |
net share | 查看开启了哪些共享 |
net share ipc$ | 开启ipc共享 |
net share c$ | 开启c盘共享 |
net time /domain | 查看时间服务器,判断主域,主域服务器都做时间服务器 |
net user /domain | 查看域用户 |
net use \192.168.xx.xx\ipc$ "" /user:"" | 与192.168.xx.xx建立空连接 |
net config Workstation | 查看计算机名、全名、用户名、系统版本、工作站、域、登录域 |
net localgroup administrators | 查看本地管理员组(通常会有域用户) |
net view /domain | 查看有几个域 |
net user 用户名 /domain | 获取指定域用户的信息 |
net group /domain | 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作) |
net group 组名 /domain | 查看域中某工作组 |
net group "domain admins" /domain | 查看域管理员的名字 |
net group "domain computers" /domain | 查看域中的其他主机名 |
net group "doamin controllers" /domain | 查看域控制器(可能有多台) |
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f | 开启3389端口(远程登录) |
netsh advfirewall set allprofiles state off net stop windefend | 关闭防火墙 |
net user guest /active:yes | |
net localgroup administrators guest /add | |
net user guest 1q2w3e4R!! | 激活guest用户并将其添加到超级管理员组,适用于在有防护情况下没有办法添加账户 |
query user | 查看当前登录用户 |
tracert IP | 路由跟踪 |
taskkill /im 12555 /f | 关闭PID为12555的进程 |
wmic process where | |
processid=4444 get processid,executablepath,name | 读取进程为4444的程序路径 |
wmic logicaldisk get caption,name | 查看盘符 |
wmic OS get Caption,CSDVersion,OSArchitecture,Version | 查看版本 |
wmic product get name,version | 查看软件 |
netsh firewall show config | 查看防火墙信息 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义