添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

渗透技巧——通过Exchange ActiveSync访问内部文件共享

0x00 前言 Exchange ActiveSync是一种Microsoft Exchange同步协议,用于在邮件服务器和移动设备之间同步邮件资源。 Adam Rutherford和David Chismon在他们的文章中介绍了通过Exchange ActiveSync访问内部文件共享的方法 文章地址: https://labs.f-secure.com/archive/accessing-internal-fileshares-through-exchange-activesync/ 本文将要基于他们的研究,介绍通过Exchange ActiveSync访问内部文件共享的细节,记录研究心得。 0x01 简介 本文将要介绍以下内容: 通过Exchange ActiveSync验证用户邮箱口令 Exchange ActiveSync开源代码测试 通过Exchange ActiveSync访问内部文件共享的细节 防御检测 0x02 基础知识 Exchange ActiveSync是一种Microsoft Exchange同步协议,该协议经过优化,以适用于高延迟和低宽带网络。 该协议基于HTTP和XML,使移动设备可以访问其电子邮件、日历、联系人和任务,并且在脱机工作时仍可以继续访问这些信息。 简单理解,计算机用户通过owa(Outlook Web Access)访问邮件资源,手机用户通过eas(Exchange ActiveSync)访问邮件资源 0x03 通过Exchange ActiveSync验证用户邮箱口令 默认对应的URL:/Microsoft-Server-ActiveSync 可以直接通过浏览器进行访问,提示输入用户名和口令 输入正确的用户名和口令后,返回内容如下图 如果没有凭据,可直接通过wget命令获得服务器信息,命令实例: wget https://192.168.1.1/Microsoft-Server-ActiveSync --no-check-certificate --debug 返回结果如下图 为了能够通过脚本实现口令验证,这里需要使用OPTIONS方法,如果凭据有效,返回状态码200 header部分加入HTTP基本认证(Basic Authentication),格式为Authorization: Basic <string>...

渗透基础——持续获得Exchange用户收件箱邮件的方法

0x00 前言 当我们获得了某个用户的口令或者hash,就能够读取这个用户的邮件。 如果用户修改了密码,我们在不知道新密码的情况下,能否继续读取这个用户的邮件呢? 站在防御的角度,当某个邮件用户的口令被泄露,在我们更换口令后,还需要做哪些操作来确保邮件数据的安全? 0x01简介 本文将要介绍以下内容: 添加转发规则持续获得Exchange用户收件箱邮件的方法 添加访问权限持续获得Exchange用户收件箱邮件的方法 添加邮件功能持续获得Exchange用户收件箱邮件的方法 添加用户权限持续获得Exchange用户邮件的方法 开源代码 防御检测 0x02 添加转发规则持续获得Exchange用户收件箱邮件的方法 1.通过ecp添加转发规则 需要能够访问Exchange Control Panel(ECP) 登录用户test1,选择organize email->inbox rules,如下图 选择Create a new rule for arriving messages... Name为规则名称,这里设置为Forwardtest 依次设置为[Apply to all messages],Forward the message to...,选择目标用户test2,如下图 至此,规则添加成功 每当用户test1收到邮件,邮件会同时发送至用户test2的收件箱 注: 如果test1删除收件箱的邮件,test2不受影响 2.通过SOAP XML message实现 SOAP格式参考: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/updateinboxrules-operation 创建规则和删除规则使用UpdateInboxRules 创建转发邮件至用户test2的规则格式如下: <?xml version="1.0"...

渗透基础——SSH日志的绕过

0x00 前言 SSH是一种网络协议,用于计算机之间的加密登录,通常用于远程登录Linux系统。 在渗透测试中,通常需要考虑SSH的口令爆破和日志删除。 本文将要介绍一些渗透测试相关的基础内容,结合利用方法给出检测建议。 0x01 简介 本文将要介绍以下内容: 程序实现SSH口令验证 SSH日志的删除 SSH日志的绕过 防御检测 0x02 程序实现SSH口令验证 1.Python实现 使用第三方库paramiko库,用法很简单 我的代码已上传至github,地址如下: https://github.com/3gstudent/Homework-of-Python/blob/master/sshCheck.py 代码支持口令登录和证书文件登录 2.C#实现 使用第三方库SSH.NET,地址如下: https://github.com/sshnet/SSH.NET 编译好的dll下载地址: https://github.com/sshnet/SSH.NET/releases/download/2016.1.0/SSH.NET-2016.1.0-bin.zip 参考文档: https://github.com/sshnet/SSH.NET/releases/download/2016.1.0/SSH.NET-2016.1.0-help.chm 在程序中引入Renci.SshNet.dll后,用法也十分简单 在编写程序上需要注意以下问题: (1)使用证书登录 SSH.NET对证书的格式有要求,SSH.NET-2016.1.0-help.chm上提示必须为BEGIN RSA PRIVATE KEY,如下图 而使用命令ssh-keygen -t rsa时,默认是以新的格式生成密钥文件,格式为BEGIN OPENSSH PRIVATE KEY,这里需要做一个转换 解决方法: 使用puttygen转换,下载地址: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 选择Load导入密钥 导出方法: Conversions->Export OpenSSH key 所以在编写程序上需要先读取证书的文件内容,判断格式是否正确 我的代码已上传至github,地址如下: https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpSSHCheck_SSH.NET.cs...

Exchange Web Service(EWS)开发指南2——SOAP XML message

0x00 前言 在之前的文章《Exchange Web Service(EWS)开发指南》开源了工具ewsManage,实现了对Exchange资源的访问。 本文将要更近一步,通过SOAP XML message实现利用hash对Exchange资源的访问。 0x01 简介 本文将要介绍以下内容: 利用hash访问Exchange资源的方法 SOAP XML message的使用 开源Python实现代码 代码开发细节 0x02 利用hash访问Exchange资源的方法 在之前的文章《渗透技巧——Pass the Hash with Exchange Web Service》介绍了使用hash登录ews的方法 本文将要基于之前的研究,介绍登录ews以后访问Exchange资源的方法,所以在程序实现上会继续选择Python,使用EWS SOAP XML message访问Exchange的资源 对于EWS SOAP XML message的格式,有以下两种方法进行参考: 1.查找资料 https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-client-applications https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/ews-xml-elements-in-exchange 2.抓包分析 配置Wireshark,实现在Exchange Server上面捕获明文通信数据 使用ewsManage访问Exchange资源 捕获通信数据,能够获得不同操作对应的EWS SOAP XML message格式,示例如下图 0x03 SOAP XML message的使用 相比于EWS...

渗透技巧——Pass the Hash with Exchange Web Service

0x00 前言 在之前的文章《渗透技巧——Pass the Hash with Remote Desktop Protocol》介绍了使用hash登录RDP的方法,本文将要继续介绍使用hash登录ews的方法。 我们知道,通过mimikatz的over pass the hash和ews的使用当前凭据登录能够实现使用hash登录ews,相关细节可参考《Exchange Web Service(EWS)开发指南》 但缺点是需要获得管理员权限并对lsass进程进行操作,无法同时对多个用户验证。 所以本文将要介绍更为通用的方法,开源实现脚本,记录思路和开发过程。 0x01 简介 本文将要介绍以下内容: 解密Exchange的通信数据 使用hash登录ews的思路 开源代码 0x02 解密Exchange的通信数据 Exchange默认使用TLS协议对数据进行加密,我们通过Wireshark抓包的方式只能获得加密后的内容,需要进行解密 这里分别介绍Exchange Server和Exchange Client捕获明文通信数据的方法 1.Exchange Server捕获明文通信数据的方法 (1)在Exchange Server上导出证书文件 使用mimikatz,命令如下: mimikatz.exe crypto::capi "crypto::certificates /systemstore:local_machine /store:my /export" 注: 如果不使用命令crypto::capi,无法导出带有私钥的证书文件(pfx文件) 这条命令会导出多个证书文件,如下图 为了找到Exchange通信数据使用的证书文件,我们可以采用如下方法: 访问Exchange登录页面,通过查看证书的有效期找到对应的证书文件,如下图 也可以通过命令行实现对证书信息的获取,代码可参考:https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SSLCertScan.cs 测试如下图 (2)配置Wireshark Edit ->...

渗透技巧——Pass the Hash with Remote Desktop Protocol

0x00 前言 在之前的文章《渗透技巧——Pass the Hash with Remote Desktop(Restricted Admin mode)》介绍了特定条件下(Server需要开启Restricted Admin mode,Client需要支持Restricted Admin mode)Pass the Hash with Remote Desktop的方法,本文将要介绍更为通用的方法(通过NTLM hash登录RDP),分析原理,开源代码,记录细节。 0x01 简介 本文将要介绍以下内容: 渗透测试中的需求 验证口令或者NTLM hash的实现方法 C实现代码 Python实现代码 C sharp实现代码 0x02 渗透测试中的需求 如果是开发远程桌面服务的客户端,可供选择的方法有很多,例如通过C#调用ActiveX组件AxMSTSCLib 详细方法可参考:https://www.codeproject.com/Articles/43705/Remote-Desktop-using-C-NET 但是在渗透测试中,我们有以下两个需求: 1.验证口令或者hash 需要满足以下条件: 可以在Windows和Linux系统上运行 登录方式支持明文口令和NTLM hash 命令行下使用 2.远程登录 可以在Windows和Linux系统上运行 登录方式支持明文口令和NTLM hash 0x03 验证口令或者hash的实现方法 为了支持NTLM hash登录,需要对协议和加密方式有所了解 关于RDP协议的参考资料:https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation...

渗透基础——利用Unicode编码混淆字符串

0x00 前言 在渗透测试中,通常会对关键代码(例如shellcode)进行混淆,以此来对抗静态检测和分析。 我最近看到了一个有趣的样本,使用Braille Patterns(盲文点字模型)对字符串进行混淆,这对静态分析造成了很大的困难。 如下图 样本地址: https://www.virustotal.com/gui/file/06f90a471f65de9f9805a9e907d365a04f4ebed1bf28b458397ad19afdb9ac00/detection 本文将会介绍这种利用Unicode编码混淆字符串的方法,通过程序分别实现对Braille Patterns(盲文点字模型)的编码和解码,分享使用其他Unicode字符表编码和解码的思路。 0x01 简介 本文将会介绍以下内容: 样本字符的实现原理 通过程序实现编码 通过程序实现解码 使用其他Unicode字符表编码和解码的思路 0x02 样本字符的实现原理 基础知识1:Unicode Unicode是一个编码方案,是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求 简单理解:我们在计算机中看到的任何字符都对应唯一的一个Unicode码 对应到上面提到的样本,虽然使用了Braille Patterns(盲文点字模型)对人工分析造成了困难,但是如果将每一个字符转换成Unicode码,就可以克服这个问题 基础知识2:Braille Patterns(盲文点字模型) 是专供盲人摸读、书写的文字符号 盲文共有64种符形,即每个字符的样式有64种 盲文点字模型在Unicode码表上共有256个区位,即有256个Unicode码对应盲文点字模型 为了能够支持更多的字符,在对应关系上使用以下方式: 小写英文字母对应单个Unicode码 阿拉伯数字对应两个Unicode码,第一个Unicode码固定为U283C 大写英文字母对应两个Unicode码,第一个Unicode码固定为U2820 注: 小写英文字母也对应两个Unicode码,第一个Unicode码固定为U2830,但通常省略第一个Unicode码 我们在代码混淆的过程中,可以不遵循以上语法,提高代码分析的难度 例如先将代码作base64编码(共有64个字符),再随机对应到Braille Patterns(盲文点字模型)的256个区位上 综上,我们可以得出实现原理:将待加密的字符转换成Unicode码,再从Unicode码转换成实际的符号 所以解密也十分简单:不需要考虑符号多么复杂,先转换成Unicode码,再进行分析 为了提高效率,下面分别介绍程序实现编码和解码的方法 为了直观的理解,程序实现上均使用Braille Grade 1编码,即逐个字母的转换,不包括缩写等单词 0x03 通过程序实现编码 对于编码的实现,优先考虑简单实用,所以选择通过网页实现编码 可供参考的资料: http://www.byronknoll.com/braille.html 这个网站支持Braille...

Pupy利用分析——Windows平台下的屏幕控制

0x00 前言 Pupy在Windows平台下的后渗透模块包括一个实用的功能:屏幕控制。这个功能不仅能够查看屏幕内容,也能够发送鼠标和键盘消息。本文将要对这个功能的实现方法进行分析,换一种思路实现类似的功能,便于二次开发。 0x01 简介 本文将要介绍以下内容: Pupy的屏幕控制模块测试 Pupy的实现方法 另一种实现方法 0x02 Pupy的屏幕控制模块测试 Pupy的基本使用方法可以参考之前的文章《Pupy利用分析——Windows平台下的功能》 获得session后,输入rdesktop加载屏幕控制模块,如下图 浏览器访问url可以对屏幕进行查看和操作,如下图 这里支持输入键盘消息和鼠标单击的操作 在使用普通用户权限进行操作时需要注意UAC的问题(无法对UAC的弹框进行操作) 弹出UAC时会创建进程consent.exe 需要使用System权限关闭这个进程,关闭后弹出对话框提示The storage control block address is invalid. 如下图 注: 关闭UAC弹框提示的cmd命令: reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f 开启UAC弹框提示的cmd命令: reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 5 /f 0x03 Pupy的实现方法...

Outlook MAPI开发指南

0x00 前言 Outlook MAPI提供了一组访问Outlook的接口,用来扩展Outlook应用程序的开发,本文将会介绍Outlook MAPI的基本用法,开源一份Outlook MAPI的实现代码mapi_tool,便于后续的二次开发。 0x01 简介 本文将要介绍以下内容: 基本知识 使用Outlook MAPI访问Outlook资源 开源代码mapi_tool mapi_tool功能介绍 多种环境下的利用思路 0x02 基本知识 参考资料: https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/outlook-mapi-reference Outlook MAPI的使用前提:需要安装Outlook客户端 Outlook MAPI同EWS的区别: Outlook MAPI用来访问Outlook客户端中的资源 EWS用来访问Exchange服务器中的资源 关于EWS的使用可以参考之前的文章《Exchange Web Service(EWS)开发指南》 Outlook客户端中的用户邮件存储在后缀名为ost的文件中,和Exchange服务器中的数据库保持一致 ost文件的默认保存位置:%LOCALAPPDATA%\Microsoft\Outlook\ MAPI主要包括以下三个功能: Address Books,设置E-mail type、protocol等参数 Transport,文件的发送和接收 Message Store,发送接收等信息的处理 0x03 使用Outlook MAPI访问Outlook资源 1.安装Outlook客户端并配置参数 2.启动Outlook客户端进行用户登录 3.使用C Sharp开发程序,实现读取收件箱邮件的功能 参考资料: https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.outlook?view=outlook-pia https://docs.microsoft.com/en-us/office/vba/api/outlook.namespace 开发环境:VS2015 新建工程,选择控制台应用程序,引用文件:Microsoft.Office.Interop.Outlook.dll...

Pupy利用分析——Windows平台下的功能

0x00 前言 Pupy是使用Python开发的跨平台远程管理和后期开发工具,支持很多实用的功能。 本文将要对Pupy在Windows平台的启动文件类型、连接方式和通信协议进行介绍,将其中的后渗透模块进行分类,逐个介绍功能 0x01 简介 本文将要介绍以下内容: 安装方法 支持的启动文件类型 支持的连接方式 支持的通信协议 后渗透模块介绍 0x02 安装方法 1. 使用docker 说明文档: https://github.com/n1nj4sec/pupy/wiki/Installation 2.直接安装 git clone --recursive https://github.com/n1nj4sec/pupy cd pupy python create-workspace.py -DG pupyws pupyws/bin/pupysh 注: 使用-DG参数将从https://github.com/n1nj4sec/pupy/releases/download/latest/payload_templates.txz下载模板文件 0x03 支持的启动文件类型 启动pupy后,输入gen -h获得生成启动文件的说明,如下图 这里逐个进行介绍 1.client 生成exe格式的文件 生成64位exe文件的命令示例: gen -f client -A x64 这个命令将从pupy/pupy/payload_templates/读取模板文件,添加配置信息后生成最终的exe文件 注: 上述命令对应的模板文件名称为pupyx64.exe,模板文件对应的下载链接:https://github.com/n1nj4sec/pupy/releases/download/latest/payload_templates.txz 2.py 生成一个完全打包的Python文件(所有依赖项都从内存打包并执行)...