第一章 内网渗透测试基础
内网基础知识
工作组
对局域网中的计算机进行分类,使得网络更有序。计算机的管理依然是各自为政,所有计算机依然是对等的,松散会员制,可以随意加入和退出,且不同工作组之间的共享资源可以相互访问。
域
“域”是一个有安全边界的计算机组合(一个域中的用户无法访问另一个域中的资源),域内资源由一台域控制器(Domain Controller,DC)集中管理,用户若想访问域内资源必须进行身份验证。当计算机连接到域时,域控制器首先需要鉴别计算机是否属于这个域,再确定用户名和密码是否正确,若全部正确则让其登录。
单域:即只有一个域的网络环境,一般需要两台DC,一台DC,另一台备用DC(容灾)
父子域:类比公司总部和公司分部的关系,总部的域称为父域,各分部的域称为该域的子域。
使用父子域的好处:
- 减小了域之间信息交互的压力(域内信息交互不会压缩,域间信息交互可压缩)
- 不同的子域可以指定特定的安全策略
父子域中域名使用一个
.
表示一个层次,类似于DNS域名表示方式,子域只能使用父域的名字作为域名后缀域树:多个域通过建立信任关系组成的集合。若两个域之间需要相互访问,需要建立信任关系(Trust Relation),通过信任关系可以将父子域连接成树状结构。
域森林:多个域树通过建立信任关系组成的集合。
域名服务器:实现域名到IP地址的转换。由于域中计算机使用DNS来定位DC、服务器和其他计算机的,所以域的名字就是DNS域的名字。
内网渗透中,大都是通过寻找DNS服务器来确定域控制器位置(因为DNS服务器和域控制器通常配置在一台机器上)
活动目录
活动目录(Active Directory,AD)是指域环境中提供目录服务的组件,用于存储有关网络对象(用户、组、计算机、共享资源、联系人)的信息。基于活动目录有目录服务,用于帮助用户从活动目录中快速找到所需的消息。活动目录使得企业可以对网络环境进行集中管理。(可类比为内网中的索引,里面存储有内网里所有资源的快捷方式)
活动目录的逻辑结构包含组织单元、域、域树、域森林。域树内的所有域共享一个活动目录,因此非常适合进行统一管理。
活动目录的功能:
- 账号集中管理
- 软件集中管理
- 环境集中管理
- 增强安全性
- 更可靠、更短的宕机时间
**域和活动目录的区别:**要实现域环境,其实就是要安装AD。一台计算机安装了AD之后就变成了DC。
安全域的划分
在一个用路由器连接的内网中,可以将网络划分为3个区域:
- 内网(安全级别最高):分为核心区(存储企业最重要的数据,只有很少的主机能够访问)和办公区(员工日常工作区,一般能够访问DMZ,部分主机可以访问核心区)
- DMZ(Demilitarized Zone,边界网络,隔离区,安全级别中等):作为内网中安全系统和非安全系统之间的缓冲区,用于对外提供服务,一般可以放置一些必须公开的服务器设施
- 外网(Internet,安全级别最低)
拥有DMZ的网络需要制定一些访问控制策略:
- 内网可以访问外网,可以访问DMZ
- 外网不能访问内网(若要访问可以通过VPN进行),只能访问DMZ
- DMZ不能访问内网(否则内网无法受到保护),也不能访问外网(存在例外,如邮件服务器等需要访问外网的服务)
域中计算机的分类
- 域控制器:用于管理所有的网络访问,存储有域内所有的账户和策略信息。允许网络中拥有多台域控制器(容灾)
- 成员服务器:安装了服务器操作系统并加入了域,但没有安装活动目录的计算机,主要任务是提供网络资源
- 客户机:安装了其他操作系统的计算机,利用这些计算机和域中的账户就可以登录到域。
- 独立服务器:和域无关,既不加入域,也没有活动目录
域内权限
- 域本地组:多域用户访问单域资源(访问同一个域),主要用于授予本域内资源的访问权限,可以从任何域中添加用户账号、通用组和全局组。域本地组无法嵌套在其他组中
- 全局组:单域用户访问多域资源(必须是同一个域中的用户),只能在创建该全局组的域中添加用户和全局组,但可以在域森林中的任何域内指派权限,也可以嵌套在其他组中
- 通用组:多域用户访问多域资源,成员信息不保存在域控制器中,而是保存在全局编录(GC)中,任何变化都会导致全林复制
A-G-DL-P策略:Account–Global–Universal Group–Domain Local Group–Permission,先将用户账号添加至全局组中,再将全局组添加至域本地组中,然后为域本地组分配资源权限。
下图为Windows Server 2012 中Users组织单元中的内置组:
搭建内网环境
域控制器主机使用服务器管理器安装“DNS”和“Active Directory域服务”两个功能,然后修改机器IP为固定IP,并修改DNS服务器为自身。安装好功能之后Win+R输入
dsa.msc
打开活动目录管理界面创建一个新的域用户其他机器在计算机名/域更改窗口内将域修改为之前创建的域即可
使用
net view /domain:域名
来查看域内主机:
第二章 内网信息收集
进入内网后,首先需要对当前网络环境进行判断:
- 我是谁:当前机器的角色
- 这是哪:当前机器所处网络环境的拓扑结构
- 我在哪:当前机器所处的区域
收集本机信息
手动收集信息
包括操作系统、权限、内网IP地址段、杀毒软件、端口、服务、补丁更新频率、网络连接、共享、会话等。
获取网络配置信息:
ipconfig /all
获取操作系统及软件信息:
systeminfo
可以通过管道符传给
findstr
来简化输出,systeminfo | findstr /B /C:"OS Name"
获取系统体系结构:
echo %PROCESSOR_ARCHITECTURE%
(cmd下,PowerShell没用)查看安装的软件、版本、路径等:
wmic product get name,version
或Get-WmiObject -class Win32_Product | Select-Object -Property name,version
(PowerShell)查看本机服务:
wmic service list brief
查询进程列表:
tasklist
或wmic process list brief
查看启动程序信息:
wmic startup list brief
查看计划任务:
schtasks /query /fo LIST /v
查看主机开机时间:
net statistics workstation
,统计数据开始时间即为开机时间查询用户列表:
net user
查询本地管理员信息(通常包含域用户):
net localgroup administrators
查看当前在线用户:
query user || qwinsta
(cmd)列出或断开本地计算机与所连接客户端之间的会话:
net session
需要管理员权限(没搞懂是干啥的)查询端口列表和连接状态:
netstat -ano
查看补丁列表:
systeminfo
,见上面的图查看已安装的补丁:
wmic qfe get Caption,Description,HotFixID,InstalledOn
查看本机共享列表和可访问的域共享列表:
net share
或wmic share get name,path,status
查看路由表和ARP缓存:
route print
和arp -a
查询防火墙相关配置
关闭防火墙:
netsh firewall set opmode disable
(WinServer2003及以前)netsh advfirewall set allprofiles state off
(WinServer2003之后)查看防火墙配置:
netsh firewall show config
修改防火墙配置
1 2 3 4 5 6 7 8 9 10 11
# WinServer2003及以前,允许指定程序全部连接 netsh firewall add allowedprogram c:\nc.exe "allow nc" enable # WinServer2003之后 netsh advfirewall firewall add rule name="pass nc" # 规则名称 dir=in/out # 流量进/出 action=allow # 执行动作 protocol=TCP # 限定协议类型 localport=3389 # 限定端口 program="c:\nc.exe" # 允许指定程序
- 自定义防火墙日志储存位置:
netsh advfirewall set currentprofile logging filename "C:\Windows\temp\fw.log"
查看代理配置情况:通过查询注册表
1
reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
查看远程连接端口:查询注册表
1
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
开启3389端口(2003之后那个命令不知道为啥跑不起来)
1 2 3 4 5 6 7
# WinServer2003及以前 wmic path win32_terminalservicesetting where (_CLASS ! ="") call setallowtsconnections 1 # WinServer2003之后 wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (_CLASS !="") call setallowtscoonections 1 wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
自动收集信息
脚本收集,利用WMIC(Windows Management Instrumentation Command-Line,Windows管理工具命令行)获取系统信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A" wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html wmic USERACCOUNT list full /format:"%var%" >> out.html wmic group list full /format:"%var%" >> out.html wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html wmic netuse list full /format:"%var%" >> out.html wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html
注:默认情况下,Windows XP的低权限用户不能访问WMIC,Windows 7以上版本系统的低权限用户允许查询操作。
Empire下的主机信息收集
Empire一款基于PowerShell的后渗透测试工具。里面提供了不少收集主机信息的模块,如
powershell/situational_awareness/host/winenum
,可以获得系统信息、剪贴板、服务、防火墙、用户组等一堆信息:还有
powershell/situational_awareness/host/computerdetails
,这个脚本要管理员权限:里面模块挺多的,慢慢玩
注:原项目已不再更新而且用的Python2,我装的时候有依赖问题,然后找到了有个项目Fork了原项目并且一直在维护https://github.com/BC-SECURITY/Empire,而且代码也都基于Python3,直接完美运行。
查询当前权限
使用whoami
查看当前权限,可分为3种情况:
- 本地普通用户:如win-2008\user
- 本地管理员用户:如win7-x64\administrator
- 域内用户:如hack\testuser
其中,本地普通用户无法查询域内信息(如果内网中存在域),而本地管理员和域内用户则可以查询到域内信息。
原理:域内所有查询都要通过域控制器来实现(使用LDAP协议),且查询需要权限认证,而域用户才能拥有这个权限。当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无需额外输入账号密码。对于本地管理员来说,本地Administrator权限可以直接提升为NT Authority或System权限,而本机的System用户对应的就是域里的对应的机器用户,所以使用System权限可以运行域内查询命令。
获取域的SID(Security Identifier)使用whoami /all
。如图,当前域SID为S-1-5-21-870803880-2107536184-4061183828
,用户administrator的SID为S-1-5-21-870803880-2107536184-4061183828-500
,是在域的SID后面增加一段数字来标识。
接下来是查询指定用户的详细信息,使用net user [username] /domain
,输出如下图,可以通过判断用户所在用户组从而确定对应用户的权限:
判断是否存在域
通过ipconfig
命令ipconfig /all
得到信息如下,主要关注图中红框中的信息。
首先是DNS后缀和DNS后缀搜索列表,很明显能看出主机就在某域内(与登录账户无关)。若主机不在域内,则这两条是空的,比如我的电脑系统:
接下来就要关注DNS服务器了。我们通过DNS后缀获得了域名,那么可以通过nslookup/ping来查询到域名对应的IP地址,也就可以判断域控制器和DNS服务器是否为同一台机器了。比如在上面那个环境下,查出来就是同一台机器:
通过systeminfo
systeminfo
中的“域”和“登陆服务器”可以确定当前主机是否在域内。
若主机在域内,则情况就会类似于如下,此时登陆服务器的主机名对应的就是域控制器。
|
|
若主机不在域内,则其域对应值为WORKGROUP,登陆服务器也应该是本机,就像下面这样:
|
|
通过查询工作站配置
使用net config workstation
命令可以查询到当前工作站的配置信息。
|
|
和上面类似,若“工作站域 DNS 名称”为WORKGROUP,则不在域内,反之在域内。除此之外,登陆域可以判断出当前用户是域用户还是本地用户。
通过net time
net time
指令的功能是将计算机的时钟与其他计算机或域的时钟同步,或显示计算机或域的时间。很多时候域服务器通常会同时作为时间服务器来使用,所以也可以通过命令net time /domain
判断是否存在域。
3种情况:
不存在域
1 2 3
找不到域 WORKGROUP 的域控制器。 请键入 NET HELPMSG 3913 以获得更多的帮助。
存在域,且当前用户是本地普通用户
1 2 3
发生系统错误 5。 拒绝访问。
存在域,且当前用户是域用户或本地管理员
1 2 3
\\hu-Server2012.hu.hack 的当前时间是 2020/11/30 22:13:47 命令成功完成。
探测域内存活主机
使用NetBIOS探测内网
NetBIOS(Network Basic Input/Output System)是局域网程序使用的一种API,它提供了OSI模型中的会话层服务,让在不同电脑上运行的不同程序,可以在局域网中,互相连线,以及分享资料。几乎所有的局域网都是在NetBIOS的基础上工作的。NetBIOS提供了名称的服务,所以通过解析机器的NetBIOS名称可以快速的扫描内网机器。
Windows系统自带的有nbtstat命令也可以用来查询NetBIOS信息。比如nbtstat -A [IP]
,程序会通过电脑中的每个网卡进行请求,但一般只有一个网卡能返回消息了,其他的都是找不到主机:
nbtscan是一个NetBIOS扫描工具,项目地址https://github.com/scallywag/nbtscan,总之好用就完事了
我还发现了一个Python库可以发NetBIOS请求,pysmb · PyPI,但这个好像没办法多线程,速度比较慢,更详细的看文档
|
|
使用ICMP协议探测内网
可以对内网中的每个IP地址进行Ping命令,来找到存活的主机。
for /L %I in (1,1,254) do @ping -w 1 -n 1 192.168.1.%I | findstr "TTL"
(只能CMD)
还有个书上的vbs脚本(要自己换IP地址段,而且巨慢,一个一个扫的)
|
|
使用ARP协议探测内网
arp-scan:https://github.com/royhills/arp-scan、http://www.royhills.co.uk/wiki/index.php/Arp-scan_User_Guide
Empire:
powershell/situational_awareness/network/arpscan
Mcafee出的软件ScanLine(没找到哪里有下载)
扫描域内端口
主要关注三类信息:
- 端口的Banner信息
- 端口上运行的服务
- 常见应用的默认端口
使用Telnet命令进行端口扫描
|
|
S扫描器
项目:kingron/s,主要用于老版本的Windows系统
|
|
Metasploit
auxiliary/scanner/portscan/tcp
模块可以扫描已开启的TCP端口。当然Metasploit还有很多种扫描技术,可以使用search portscan
来搜索:
PowerShell脚本
- PowerSploit的Invoke-Portscan脚本:https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1
- Nishang的Invoke-Portscan模块:https://raw.githubusercontent.com/samratashok/nishang/master/Scan/Invoke-PortScan.ps1
获取帮助:Get-Help [Module-Name] -full
端口Banner信息
发现端口之后可以通过工具获取其Banner信息(比如上面的Telnet)。查询到Banner之后可以拿去漏洞库查找是否有对应版本的漏洞以及其对应的PoC、EXP,再去目标系统中进行验证。参考网站:Exploit Database、SecurityFocus
收集域内基础信息
注:通过LDAP协议到域控制器上进行查询的命令仅域内用户和本地管理员可执行
查询域:
net view /domain
查询域内所有计算机:
net view /domain:[DOMAIN]
查询域内所有用户组列表:
net group /domain
几个常见的系统自带用户身份:Domain Admins(域管理员,默认对域内所有控制器有完全控制权限)、Domain Computers(域内计算机)、Domain Controllers(域控制器)、Domain Guest(域访客,权限较低)、Domain Users(域用户)、Enterprise Admins(企业系统管理员,默认对域内所有控制器有完全控制权限)
查询具体用户组成员列表:
net group "[USER GROUP]" /domain
获取域密码信息:
net accounts /domain
获取域信任信息:
nltest /domain_trusts
查找域控制器
nltest /DCLIST:[DOMAIN NAME]
1 2 3 4
C:\Users\testuser>nltest /DCLIST:hu 获得域“hu”中 DC 的列表(从“\\HU-SERVER2012”中)。 hu-Server2012.hu.hack [PDC] [DS] 站点: Default-First-Site-Name 此命令成功完成
nslookup -type=SRV _ldap._tcp
,可以拿到域控制器的IP地址1 2 3 4 5 6 7 8 9 10
C:\Users\testuser>nslookup -type=SRV _ldap._tcp 服务器: UnKnown Address: 192.168.6.100 _ldap._tcp.hu.hack SRV service location: priority = 0 weight = 100 port = 389 svr hostname = hu-server2012.hu.hack hu-server2012.hu.hack internet address = 192.168.6.100
net time /domain
net group "Domain Controllers" /domain
netdom query pdc
(Win7找不到这个命令,Server08和Server12都没问题)1 2 3 4 5
PS C:\Users\Administrator\Desktop> netdom query pdc 域的主域控制器: HU-SERVER2012 命令成功完成。
获取域内用户和管理员信息
查询域用户列表
查询域内用户:
net user /domain
(krbtgt用户不仅可以创建票据授权服务的加密密钥,还可以实现多种域内权限持久化方法)1 2 3 4 5 6 7 8
PS C:\Users\Administrator\Desktop> net user /domain \\HU-SERVER2012 的用户帐户 ------------------------------------------------------------------------------- Administrator Guest krbtgt testuser 命令成功完成。
获取域内用户的详细信息:
wmic useraccount get /all
dsquery user
(dsquery是专门用于查询AD数据的,可以查询指定的类别:https://blog.51cto.com/549687/1982400)查询本地管理员组:
net localgroup administrators
查询域管理员用户组
主要是上面提到的Domain Admins和Enterprise Admins两个用户组:
|
|
定位域管理员
当计算机加入域之后,会默认给域管理员的用户组赋予本地系统管理员权限,所以域管理员都可以访问本地计算机,具有完全控制权限。
定位域内管理员的常规方法:本地机器管理员日志和机器的登录会话
常用工具
PsLoggedon.exe:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon(是个工具集,还有别的程序不知道干啥的)
PVEFindADUser.exe:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn,可以获取每台机器现在登录的用户和最后登录的用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
PS C:\Users\testuser\Desktop> .\PVEFindADUser.exe -current -v ----------------------------------------- PVE Find AD Users Peter Van Eeckhoutte (c) 2009 - http://www.corelan.be:8800 Version : 1.0.0.12 ----------------------------------------- [+] Finding currently logged on users ? true [+] Finding last logged on users ? false [+] Removing old report.csv, if necessary [+] Writing new report.csv header [+] Enumerating all computers... [+] Number of computers found : 3 [+] Launching queries [+] Processing host : hu-Server2012.hu.hack (Windows Server 2012 R2 Datacenter) * Pinging host hu-Server2012.hu.hack (2 times) * Nr of successful pings : 2/2 * Ping ok Found current user : hu\administrator - Logged on user : hu\administrator [+] Processing host : HU-WIN7-PC.hu.hack (Windows 7 旗舰版;Service Pack 1) * Pinging host HU-WIN7-PC.hu.hack (2 times) * Nr of successful pings : 2/2 * Ping ok [+] Processing host : HU-SERVER2008.hu.hack (Windows Server 2008 R2 Enterprise;Service Pack 1) * Pinging host HU-SERVER2008.hu.hack (2 times) * Nr of successful pings : 2/2 * Ping ok Found current user : hu\testuser - Logged on user : hu\testuser [+] Report written to report.csv
netview.exe:https://github.com/mubix/netview,基于
NetSessionEnum
、NetShareEnum
、NetWkstaUserEnum
等Win32枚举API来枚举登录会话和用户信息,绝大多数功能不需要管理员权限。Nmap NSE脚本:smb-enum-sessions、smb-enum-domains、smb-enum-users、smb-enum-shares、smb-enum-processes、smb-os-discovery
PowerView脚本:https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
Empire模块:
powershell/situational_awareness/network/powerview/user_hunter
,好像和前面那个PowerView里面的Invoke-UserHunter一样的
查找域管理进程
本机检查
net group "Domain Admins" /domain
查域管理员tasklist /v
可以显示本机所有进程和进程用户,找到对应域管理员进程即可(实际情况并非如此)
查询域控制器的域用户会话
查询所有的域控制器
收集域管理员列表
收集所有活动域的会话列表:NetSess
1 2 3 4 5 6 7 8 9 10 11 12
PS C:\Users\Administrator\Desktop> .\NetSess.exe 192.168.6.102 -full NetSess V02.00.00cpp Joe Richards (joe@joeware.net) January 2004 Enumerating Host: 192.168.6.102 Client User Name Client Type Opens Time Idle Time Transport ---------------------------------------------------------------------------------------------------------- ------- \\HU-SERVER2012 Administrator 1 000:00:00 000:00:00 Total of 1 entries enumerated
交叉引用域管理员列表与活动会话列表:GDA
查看远程系统中运行的任务
- 收集域管理员列表
- 用
tasklist /V
去找是否有对应用户的任务
扫描远程系统中的NetBIOS信息
nbtstat -A [IP]
或nbtscan
利用PowerShell收集域信息
设置PowerShell执行权限:Set-ExecutionPolicy Unrestricted
使用上面的PowerView:https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
BloodHound
BloodHound是一款域分析工具,可以将域内用户、计算机、会话、组、ACL之间的关系直观的展现出来,使得我们可以更加便捷地分析域内情况
安装和使用:https://xz.aliyun.com/t/7311
安装后使用SharpHound工具来提取信息,使用Cobalt Strike或其他工具将SharpHound上传至目标机器并运行,会在运行当前目录生成一个压缩包,上传至BloodHound可以获得视图。
敏感数据的防护
资料、数据、文件的定位流程
- 定位内部人事组织机构
- 寻找需要监视的人员
- 定位相关人员的机器
- 监视存放文档的位置
- 列出存放文档服务器的目录
核心业务机器和敏感信息防护
- 高级管理人员、系统管理员、财务/人事/业务人员的计算机
- 产品管理系统服务器
- 办公系统服务器
- 财务应用系统服务器
- 核心产品源码服务器(SVN、Git)
- 数据库服务器
- 文件服务器
- 电子邮件服务器
- 网络监控系统服务器
- ……
隐藏通信隧道技术
概述
隧道是一种绕过防火墙/IDS对系统端口屏蔽的一种方式,隧道两端的数据包通过防火墙允许的数据包类型或端口进行封装,然后穿过防火墙,抵达目的地之后再解封装还原数据。
常用:
- IPv6隧道、ICMP隧道、GRE隧道(网络层)
- TCP隧道、UDP隧道、端口转发(传输层)
- SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道(应用层)
判断内网机器的连通性
指判断内网机器是否能够连上外网。
- ICMP协议:
ping
命令 - TCP协议:使用netcat(
nc [IP] [port]
) - HTTP协议:使用
curl
命令 - DNS协议:使用
nslookup
(Windows)、dig
(Linux)
特殊情况:内网流量不能直接流出,需要经过Proxy服务器,判断方法:
- 查看网络连接,是否存在与其他机器的8080(不确定)端口的连接
- 查看内网中是否有类似proxy字样的机器
- 查看IE浏览器的直接代理
- 查找PAC文件
curl -x proxy-ip:port host
进行判别
网络层隧道
IPv6隧道
IPv6隧道属于IPv4到IPv6过渡技术的一种,还有一种是IPv4和IPv6双栈,具体可以看https://blog.csdn.net/qq_38265137/article/details/80466720
IPv6隧道主要有三种
IPv6 over IPv4手动隧道:直接把IPv6报文封装到IPv4报文中去,IPv6报文作为IPv4报文的净载荷,源地址和目的地址均为手工指定,边界设备必须支持双栈
IPv6 over IPv4 GRE隧道:使用标准的GRE(通用路由封装,Generic Routing Encapsulation)隧道技术提供了点到点连接服务,需要手工指定隧道的端点地址
自动隧道:用户仅需要配置设备隧道的起点,隧道的终点由设备自动生成,使用内嵌IPv4地址的IPv6地址
支持IPv6的隧道工具:socat、6tunnel、nt6tunnel等
ICMP隧道
将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙不会屏蔽ping数据包)
常用工具:
icmpsh,直接在ICMP ping消息下面挂Data Payload:
PingTunnel:http://freshmeat.sourceforge.net/projects/ptunnel/,还一个中文版的https://github.com/esrrhs/pingtunnel
防御ICMP隧道攻击:
- 检测同一来源的ICMP数据包数量(隧道会产生大量ICMP数据包)
- 注意Payload大于64Byte的数据包
- 寻找响应和请求Payload不一致的数据包
- 注意某些特定隧道程序的协议标签
传输层隧道
lcx
lcx是一个基于Socket实现的端口转发工具,Windows版为lcx.exe,Linux版为portmap,需要一个服务端和一个客户端
常用用法:
|
|
netcat(nc)
netcat老熟人了,意为网络中的cat命令。Windows下可以用Nmap附赠的Ncat
常用用法:
nc -nv IP Port
查端口Bannernc -v -z IP Port-Range
扫描端口范围nc -lvp Port
监听端口nc -nv IP Port < file -q 1
传输文件