-
本地密码查看工具LaZagne中的自定义脚本开发
0x00 前言 LaZagne是一款用于检索大量存储在本地计算机密码的开源应用程序。 因为每个软件储存密码的方式不尽相同(明文、API、定制算法、数据库等),所以该工具使用多种方法获取软件密码,目前支持的软件如下图 该工具通过python开发,易读、易维护,所以本文就尝试对其扩展,编写python脚本实现对360极速浏览器的密码导出,并且介绍脚本开发过程的细节。 0x01 简介 本文将要介绍以下内容: 解决LaZagne中的bug 开发脚本导出360极速浏览器密码 使用py2exe将python脚本转成exe 使用PyInstaller将python脚本转成exe 0x02 LaZagne中的bug LaZagne下载地址: https://github.com/AlessandroZ/LaZagne python版本:2.7 下载后执行\LaZagne-master\LaZagne-master\Windows\laZagne.py 报错,缺少第三方扩展包pyasn1和psutil 安装第三方扩展包: ` C:\Python27\Scripts\easy_install.exe pyasn1` ` C:\Python27\Scripts\easy_install.exe psutil ` 再次执行\LaZagne-master\LaZagne-master\Windows\laZagne.py 仍然报错,提示如下: ImportError: No module named memorpy 经过搜索,并没有第三方扩展包memorpy,猜测是输入错误,正确的应该为memory_profiler 安装扩展包memory_profiler: C:\Python27\Scripts\easy_install.exe memory_profiler 并且修改源文件: 路径为\LaZagne-master\LaZagne-master\Windows\lazagne\softwares\memory\memorydump.py Line14:from memorpy import * 修改为 from memory_profiler import * 成功执行laZagne.py,如下图...
-
渗透技巧——Windows平台运行Masscan和Nmap
0x00 前言 在内网渗透中,信息搜集尤为重要。 面对内网的复杂环境,虽说网络扫描容易暴露自己,但通过扫描可以发现内网的存活主机、开放端口,运行服务、操作系统等信息,为进一步渗透奠定基础。 扫描工具的选取,不仅要考虑功能,更要考虑工具的适用性。 现实中的跳板通常并不是一台Linux服务器,没有合适的环境安装Nmap、Zmap和Masscan。 换句话说,可在Windows下直接使用的命令行扫描工具有哪些呢? 知名的开源扫描工具Nmap、Zmap和Masscan,三款工具在功能上各有特色。 在适用性上,Zmap在Windows下使用需要安装Cygwin,因此不在考虑范围内。 Masscan支持Windows平台的编译,Nmap提供命令行版本,看起来Masscan和Nmap符合要求。 但是,Masscan和Nmap的使用均需要WinPcap的支持,也就是说,使用前均需要安装WinPcap。 那么,能否通过命令行安装WinPcap呢? 0x01 简介 本文将要要解决以上问题,介绍内容如下: Windows平台编译Masscan Windows命令行安装WinPcap Masscan使用介绍 Nmap配置和使用介绍 0x02 Windows平台编译Masscan Masscan下载地址: https://github.com/robertdavidgraham/masscan/ 编译工具:vs2012 编译选项中未添加vs2012的编译配置,所以直接编译会报错 解决方法: 在string_s.h中添加vs2012配置信息 位于misc-string_s.h,添加代码如下: #if defined(_MSC_VER) && (_MSC_VER == 1700) /*Visual Studio 2012*/ # include <stdio.h> # include <string.h> # define strcasecmp _stricmp # define memcasecmp...
-
利用JS加载.Net程序
0x00 前言 最近James Forshaw开源了一个工具DotNetToJScript,能够利用JS/Vbs脚本加载.Net程序,很有趣。 Casey Smith和Cn33liz都对此做了进一步研究,开源了他们的利用代码。 本文将要对该技术作系统整理,帮助大家更好的认识。 0x01 简介 本文将要介绍以下内容: DotNetToJScript编译方法 DotNetToJScript使用方法 利用JS/Vbs执行shellcode 利用JS/Vbs执行powershell脚本 0x02 DotNetToJScript编译方法 DotNetToJScript下载地址: https://github.com/tyranid/DotNetToJScript 使用工具VS2012进行编译 报错1: 缺少程序集引用NDesk.Options 解决方法: 需要添加引用NDesk.Options 下载地址: http://www.ndesk.org/Options 解压缩,工程-添加引用-浏览-\ndesk-options-0.2.1.bin\ndesk-options-0.2.1.bin\lib\ndesk-options\NDesk.Options.dll 接下来,将目标框架指定为.NET Frameword 2.0,重新编译 报错2: 缺少程序集引用Linq 解决方法: 添加对System.Core.dll 3.5的引用 位置: C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll 添加引用后编译成功,分别在两个目录生成DotNetToJScript.exe和ExampleAssembly.dll 0x03 DotNetToJScript使用方法 1、生成js脚本 参数如下: DotNetToJScript.exe -o 1.js ExampleAssembly.dll 执行后,生成1.js 执行1.js,调用ExampleAssembly.dll中的public TestClass()...
-
利用API NtQueryInformationThread和I_QueryTagInformation实现对Windwos日志监控的绕过
0x00 前言 在上篇文章《渗透技巧——Windows日志的删除与绕过》中提到一个绕过Windows日志监控的思路:使用API NtQueryInformationThread和I_QueryTagInformation获取线程对应的服务,关闭对应日志记录功能的线程,能够破坏日志功能,并且Windows Event Log服务没有被破坏,状态仍为正在运行。本文将要对其详细介绍,分享使用c++在编写程序上需要注意的细节。 0x01 简介 本文将要介绍以下内容: 程序自身提权 遍历进程中的所有线程 根据线程tid,获取对应的进程pid 根据线程tid,获取对应的服务名称 结束线程 0x02 程序实现 开发工具: VS2012 开发语言: c++ 1、定位eventlog服务对应进程svchost.exe的pid powershell代码如下: Get-WmiObject -Class win32_service -Filter "name = 'eventlog'" | select -exp ProcessId 通过回显能够找出进程svchost.exe的pid 2、程序自身提权,以管理员权限执行 因为进程svchost.exe为系统权限,所以对其线程进行操作也需要高权限,因此,程序需要先提升至管理员权限 提权至管理员权限的代码如下: BOOL SetPrivilege() { HANDLE hToken; TOKEN_PRIVILEGES NewState; LUID luidPrivilegeLUID; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)||!LookupPrivilegeValue(NULL, SE_DEBUG_NAME,...
-
渗透技巧——Windows日志的删除与绕过
0x00 前言 在渗透测试过程中,Windows日志往往会记录系统上的敏感操作,如添加用户,远程登录执行等。 对于一次完整的渗透测试,通常会选择对Windows日志进行清除和绕过,而对于防御者来说,了解常用的绕过方法也有助于更好的保护自己的系统。 所以本文将要介绍常见的Windows日志清除与绕过方法,分享经验,帮助大家。 0x01 简介 本文将要介绍以下内容: Windows日志的常用清除方法 Windows日志的两种绕过方法 0x02 Windows日志 Windows日志包括五个类别: 应用程序 安全 Setup 系统 转发事件 查看方式: 1、 通过面板 位置如下: Control Panel\System and Security-View event logs-Windows Logs 如下图 2、 通过Powershell 常用命令如下: (管理员权限) 查看所有日志: Get-WinEvent 查看应用程序类别下的日志: Get-WinEvent -FilterHashtable @{logname="Application";} 0x03 Windows日志的常用清除方法 1、wevtutil.exe 操作系统默认包含,支持系统:Win7及以上 常用命令如下: (1) 统计日志列表,查询所有日志信息,包含时间,数目 wevtutil.exe gli Application...
-
Use AppDomainManager to maintain persistence
0x00 前言 从Casey Smith@subTee学到的一个技巧:针对.Net程序,通过修改AppDomainManager能够劫持.Net程序的启动过程。 如果劫持了系统常见.Net程序如powershell.exe的启动过程,向其添加payload,就能实现一种被动的后门触发机制。 学习链接: http://subt0x10.blogspot.com/2017/06/attacking-clr-appdomainmanager-injection.html 0x01 简介 本文将要介绍以下内容: 劫持自己开发的.Net程序 劫持系统.Net程序powershell_ise.exe 一种针对Visual Studio的利用思路 0x02 相关概念 CLR: 全称Common Language Runtime(公共语言运行库),是一个可由多种编程语言使用的运行环境。 CLR是.NET Framework的主要执行引擎,作用之一是监视程序的运行: 在CLR监视之下运行的程序属于“托管的”(managed)代码 不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管的”(unmanaged)的代码 对于在CLR监视之下的程序,程序启动的初始化过程可参考如下链接: http://mattwarren.org/2017/02/07/The-68-things-the-CLR-does-before-executing-a-single-line-of-your-code/ 值得注意的地方: 如果能从程序启动的初始化过程中找到一个可供利用的位置,在程序启动之前加载我们自己的代码,那么就可以“滥用”CLR的功能,实现对程序的劫持 更理想的情况下: 如果可被劫持的程序是一个系统常用程序,随开机自启动,那么,这个方法就能作为一个持续性后门 下面介绍Casey Smith@subTee分享的后门思路:AppDomainManager 0x03 劫持自己开发的.Net程序 注: 代码引用自:http://subt0x10.blogspot.com/2017/06/attacking-clr-appdomainmanager-injection.html 1、编写示例程序 使用Visual Studio,选择c#开发环境,新建控制台应用程序,工程名:program,代码如下: using System; public class Program { public static void Main() {...
-
Use Waitfor.exe to maintain persistence
0x00 前言 从Casey Smith@subTee的Twitter上获得的一个思路,利用Waitfor.exe有可能实现一种后门机制。 于是我对其做了进一步研究,并且使用Powershell写了一个后门利用的POC。 本文将要介绍Waitfor.exe在渗透测试中的利用技巧,并且分享开发POC的思路和细节。 完整POC下载地址如下: https://github.com/3gstudent/Waitfor-Persistence 0x01 简介 本文将要具体介绍以下内容: Waitfor.exe简介 利用思路 POC细节 0x02 Waitfor.exe简介 用来同步网络中计算机,可以发送或等待系统上的信号 支持系统: Windows Server 2003 Windows Vista Windows XP Windows Server 2008 Windows 7 Windows Server 2003 with SP2 Windows Server 2003 R2 Windows Server 2008 R2 Windows Server 2000 Windows Server 2012 Windows...
-
渗透技巧——程序的降权启动
0x00 前言 在渗透测试中,常常会遇到需要改变程序启动权限(分为提权和降权)的情况。 提权包含从普通用户权限到管理员权限和从管理员权限到system权限,而渗透测试中的降权通常是指从system权限降到普通用户权限(从管理员权限降到普通用户权限比较简单,方法很多),往往是为了操作当前用户的文件内容(如捕获桌面、操作注册表等) 本文将会介绍具体的降权方法(从system权限降到普通用户权限),理清其中的重点,并且开源一个小工具,用于判断进程权限 0x01 简介 本文将要介绍以下内容: 为什么要降权 从管理员权限降到普通用户权限的方法 从system权限降到普通用户权限的方法 利用SelectMyParent实现提权和降权 注: 测试系统: Win7 0x02 为什么要降权 使用sytem权限的进程可能会遇到以下问题: 1、无法获得当前用户的文件内容 例如无法捕获用户的屏幕 2、环境变量有差异 比如以下环境变量: APPDATA Temp Tmp USERDOMAIN USERNAME USERPROFILE cmd下可通过echo查看环境变量,例如查看环境变量APPDATA的命令为: echo %appdata% system权限下,查询到的环境变量APPDATA为C:\Windows\system32\config\systemprofile\AppData\Roaming 管理员权限下,查询到的环境变量APPDATA为C:\Users\a\AppData\Roaming 如下图 通过API SHGetSpecialFolderPath 获取指定的系统路径,如APPDATA,也能发现权限不同导致的区别 c++代码如下: #include <windows.h> #include <Shlobj.h> bool IsSystemPrivilegeCmp() { static bool isSystemPrivilege = false;...
-
Study Notes of using BGInfo to bypass Application Whitelisting
0x00 前言 最近看到一篇有趣的文章《Bypassing Application Whitelisting with BGInfo》,介绍了如何通过BGInfo实现白名单绕过,我对此很感兴趣,于是对这部分内容做了学习整理,同时开源了一个powershell脚本,用于自动生成.bgi文件 文章地址如下: https://msitpros.com/?p=3831 0x01 简介 本文将要介绍如下内容: Bginfo简介 通过Bginfo绕过白名单的实际操作 如何使用powershell编辑二进制文件 如何开发powershell脚本自动生成.bgi文件 0x02 Bginfo Bginfo—强大的Windows系统信息显示工具,出自Sysinternals套件 下载地址: https://technet.microsoft.com/en-us/sysinternals/bb897557.aspx 注: bginfo.exe最新版本为4.22,本文测试版本为4.21 1、简介 可以自动在桌面的一个区域中显示当前Windows环境信息 面板如图 设置后,桌面显示Windows环境信息,如图 编辑要显示的信息,可将其保存为config.bgi,使用时将其导入就好 2、Bginfo命令行模式 /h 弹出帮助 如图 通过命令行设置桌面显示信息的命令如下: bginfo.exe config.bgi /timer:0 /nolicprompt /silent 3、扩展: 点击Custom可自定义桌面显示内容,如图 选择New 设置数据源,包括环境变量、注册表键值、WMI、文件、VB Script脚本 4、导入WMI查询: 添加一个WMI查询,如图 在面部添加显示内容,修改桌面,成功显示新内容,如图 5、导入VBS: 添加一个vbs查询,vbs脚本可参考: https://gist.githubusercontent.com/api0cradle/efc90f8318556f0737791b6d73a4ec8b/raw/9a46f4cdacb5752e721e1e3701308939351b4768/gistfile1.txt 该vbs脚本实现:...
-
Study Notes of using SilentCleanup to bypass UAC
0x00 前言 最近我在James Forshaw的博客学到了一个Win10下绕过UAC的技巧,该方法通过脚本实现,并且目前微软还未对该绕过方法进行修复(预计在Win10 RS3修复)。经过我的学习测试,该方法同样适用于Win8,并且文中介绍的绕过思路很值得学习,因此整理成文,分享给大家。 文章地址如下: https://tyranidslair.blogspot.co.uk/2017/05/exploiting-environment-variables-in.html 0x01 简介 本文将要介绍以下内容: 绕过思路 利用方法 防御检测 0x02 绕过思路 在之前文章也分享过一些绕过UAC思路的心得,可参考以下文章: https://3gstudent.github.io/Study-Notes-of-using-sdclt.exe-to-bypass-UAC https://3gstudent.github.io/Study-Notes-Weekly-No.1(Monitor-WMI_ExportsToC++_Use-DiskCleanup-bypass-UAC) 个人认为寻找绕过UAC的方法可分为以下两个步骤: 1、寻找权限控制不严格的程序 通常具有以下特点: 以普通用户权限启动程序 程序默认以高权限启动,通常标记为Highest 2、该程序启动过程是否可被劫持 启动路径是否可被劫持 启动过程加载的问题(如dll)是否可被劫持 0x03 利用方法 对应到James Forshaw的方法,也是优先寻找权限控制不严格的程序——计划任务中的SilentCleanup 注: Matt Nelson之前也介绍过一个利用SilentCleanup绕过UAC的方法,目前已被修复,文章地址如下: https://enigma0x3.net/2016/07/22/bypassing-uac-on-windows-10-using-disk-cleanup/ 计划任务中的SilentCleanup: 普通用户权限即可启动 启动后自动提升为高权限 通过Powershell可以获取更多细节,代码如下: $task = Get-ScheduledTask SilentCleanup $task.Principal 注: Win7默认powershell版本2.0,不支持Get-ScheduledTask操作 如下图 Authenticated Users表示普通用户权限即可启动 RunLevel为Highest表示以高权限启动 查看启动参数,powershell代码如下:...