破解与攻击智能门锁
实验说明
在本实验中,我们将研究如何分析OKLOK智能锁安全性,并分析安卓APP,动态代码调试和BLE分析控制,最终实现使用我们的代码来远程控制智能门锁。
我们将首先使用BLE适配器和Gatttool与智能锁进行交互,并探索设备上存在的服务和特征。然后,使用JEB对安卓APP进行逆向,以了解服务和特征的含义。接着,我们将研究安卓APP和智能锁之间的BLE流量。使用Android BLE日志记录功能查看BLE流量,但也可以使用Ubertooth或任何其他BLE siffer。BLE流量和移动应用程序的分析将使我们看到了通信已使用AES加密。
最后,我们将使用安卓APP插桩查找加密密钥和其他值,我们将使用它们编写自动脚本在无需任何身份验证情况下,来接管智能锁并解锁。
所需资源
硬件
智能门锁(OKLOK)
BLE适配器
安卓手机(安装OKLOK应用程序)
Ubertooth(可选)
软件
Wireshark
Bettercap/Bleah
Android device 1 Ubertooth-tools
Jeb
OKLOK.apk
OKLOK_gadget.apk
OKLOK智能锁介绍
OKLOK是具有蓝牙低功耗(BLE)功能的智能挂锁。除其他功能外,还可以使用适用于Android和ios的OKLOK应用从手机远程操作挂锁。在本实验中,我们将分析Android应用,了解如何将其与BLE利用方法结合使用以控制智能锁。
该锁支持使用注册用户的指纹进行解锁,但是在这里,我们仅关注BLE上的远程解锁功能。
默认情况下,锁处于睡眠状态,即蓝牙扫描器既看不到锁,也不响应BLE命令。为了使用它,必须通过触摸锁体上的指纹传感器来激活它。激活后,锁在闲置几秒钟后会自动返回到睡眠状态。
OKLOK分析
初步分析
为了分析智能插头,我们要做的第一件事是找到目标智能锁的地址。为此,我们将首先确保已连接BLE蓝牙。运行hciconfig以查看智能锁蓝牙是否已成功连接到VM。
现在使用Gatttol连接到设备,并探索设备上存在的服务和特征列表。使用hcitool是为了对设备的连接进行管理,那么对BLE数据进行精细化管理的话,就需要用到gatttool,使用gatttool对蓝牙设备发送指令的操作上要比hcitool的cmd齐全很多,关于gatttool的使用分为两种,直接使用参数对蓝牙设备进行控制,使用-I参数进入gatttool的interactive模式对蓝牙设备进行控制。
实验说明
在本实验中,我们将研究如何分析OKLOK智能锁安全性,并分析安卓APP,动态代码调试和BLE分析控制,最终实现使用我们的代码来远程控制智能门锁。
我们将首先使用BLE适配器和Gatttool与智能锁进行交互,并探索设备上存在的服务和特征。然后,使用JEB对安卓APP进行逆向,以了解服务和特征的含义。接着,我们将研究安卓APP和智能锁之间的BLE流量。使用Android BLE日志记录功能查看BLE流量,但也可以使用Ubertooth或任何其他BLE siffer。BLE流量和移动应用程序的分析将使我们看到了通信已使用AES加密。
最后,我们将使用安卓APP插桩查找加密密钥和其他值,我们将使用它们编写自动脚本在无需任何身份验证情况下,来接管智能锁并解锁。
所需资源
硬件
智能门锁(OKLOK)
BLE适配器
安卓手机(安装OKLOK应用程序)
Ubertooth(可选)
软件
Wireshark
Bettercap/Bleah
Android device 1 Ubertooth-tools
Jeb
OKLOK.apk
OKLOK_gadget.apk
OKLOK智能锁介绍
OKLOK是具有蓝牙低功耗(BLE)功能的智能挂锁。除其他功能外,还可以使用适用于Android和ios的OKLOK应用从手机远程操作挂锁。在本实验中,我们将分析Android应用,了解如何将其与BLE利用方法结合使用以控制智能锁。
该锁支持使用注册用户的指纹进行解锁,但是在这里,我们仅关注BLE上的远程解锁功能。
默认情况下,锁处于睡眠状态,即蓝牙扫描器既看不到锁,也不响应BLE命令。为了使用它,必须通过触摸锁体上的指纹传感器来激活它。激活后,锁在闲置几秒钟后会自动返回到睡眠状态。
OKLOK分析
初步分析
为了分析智能插头,我们要做的第一件事是找到目标智能锁的地址。为此,我们将首先确保已连接BLE蓝牙。运行hciconfig以查看智能锁蓝牙是否已成功连接到VM。
现在使用Gatttol连接到设备,并探索设备上存在的服务和特征列表。使用hcitool是为了对设备的连接进行管理,那么对BLE数据进行精细化管理的话,就需要用到gatttool,使用gatttool对蓝牙设备发送指令的操作上要比hcitool的cmd齐全很多,关于gatttool的使用分为两种,直接使用参数对蓝牙设备进行控制,使用-I参数进入gatttool的interactive模式对蓝牙设备进行控制。
❤1
一次hvv中的asmx上传绕过waf记录
前段时间参加某省级hvv遇到一个很有意思的上传,花了两个小时研究绕过,注册论坛这么久了,没有发过帖子在此记录一下,来混个脸熟。
目标是某个省级的单位,有自己的云,子域名挺多,在hvv中最喜欢拿这种目标下手了,开干。通过bing获取到n多子域名,常规流程走一遍反序列化、上传、猜密码、命令执行(因为比较菜每次就会用这几招),但是每次hvv防守方总有那么些低级问题被我搞定,这不直接注册用户发现一枚上传,本以为可以快刀斩乱麻几分钟就搞定然后开开心心搞内网,没想到自己太菜硬是卡了两个小时。打开目标站点发现有注册登录的地方,毫不犹豫直接先注册,狗屎运真好直接发现头像可以上传
测试一下上传正常图片,先看看功能正常不,还好功能正常如下,上传成功并且返回了文件路径,之后尝试了ashx、asp、ascx、asax 等发现全部是502,hvv太累脑袋短路当时没想到asmx,总之至此说明服务器有某种waf之类的程序黑名单模式干掉了这些敏感后缀,正常的非脚本类型后缀都可以上传
前段时间参加某省级hvv遇到一个很有意思的上传,花了两个小时研究绕过,注册论坛这么久了,没有发过帖子在此记录一下,来混个脸熟。
目标是某个省级的单位,有自己的云,子域名挺多,在hvv中最喜欢拿这种目标下手了,开干。通过bing获取到n多子域名,常规流程走一遍反序列化、上传、猜密码、命令执行(因为比较菜每次就会用这几招),但是每次hvv防守方总有那么些低级问题被我搞定,这不直接注册用户发现一枚上传,本以为可以快刀斩乱麻几分钟就搞定然后开开心心搞内网,没想到自己太菜硬是卡了两个小时。打开目标站点发现有注册登录的地方,毫不犹豫直接先注册,狗屎运真好直接发现头像可以上传
测试一下上传正常图片,先看看功能正常不,还好功能正常如下,上传成功并且返回了文件路径,之后尝试了ashx、asp、ascx、asax 等发现全部是502,hvv太累脑袋短路当时没想到asmx,总之至此说明服务器有某种waf之类的程序黑名单模式干掉了这些敏感后缀,正常的非脚本类型后缀都可以上传
记一次大型且细小的域渗透实战
1. 信息收集:
(1)目前我在r**a这台主机(接下来r**a=ra),而ra主机上有ra用户,并且已经提权到了system,其中ip为192.168.1.95(忽略下面的主域)
当前用户为ra,其完全用户名=m\ra
当前机子所在域的FQDN(完全域名),我们接下来在文中统称为 m.child.xiaoli
查看域控制器
可能不是英文的原因,CobaltStrike的net domain_controller没用了
枚举Enterprise Admins
这里我们要做笔记,在子域环境里面,域管理员有两种,一种是Domain Admins,另外一种是Enterprise Admins,我们net group /domain 看不到任何有关Enterprise Admins的信息,但是不慌,我们上powersploit神器
二次进攻
主要是观察DCAL和ACE,但是我写的时候已经太累了,就不想写,而且我怕修改了密码之类的操作被发现,虽然密码改了可以用mimikatz改回去
1. 信息收集:
(1)目前我在r**a这台主机(接下来r**a=ra),而ra主机上有ra用户,并且已经提权到了system,其中ip为192.168.1.95(忽略下面的主域)
当前用户为ra,其完全用户名=m\ra
当前机子所在域的FQDN(完全域名),我们接下来在文中统称为 m.child.xiaoli
查看域控制器
可能不是英文的原因,CobaltStrike的net domain_controller没用了
枚举Enterprise Admins
这里我们要做笔记,在子域环境里面,域管理员有两种,一种是Domain Admins,另外一种是Enterprise Admins,我们net group /domain 看不到任何有关Enterprise Admins的信息,但是不慌,我们上powersploit神器
二次进攻
主要是观察DCAL和ACE,但是我写的时候已经太累了,就不想写,而且我怕修改了密码之类的操作被发现,虽然密码改了可以用mimikatz改回去
Vue.js devtools 通用 XSS(Chrome 扩展)
漏洞描述
在 中devtools-background.js,函数中存在代码注入toast。它可以由任意选项卡中的 postMessage 触发,从而导致在打开浏览器的开发者工具(F12)时发生通用 XSS。攻击者可以托管一个特制的网页来利用此漏洞,然后诱使用户查看该网页并在其他 Chrome 选项卡中打开开发者工具(F12)。
技术细节
Chrome 扩展程序的 中manifest.json,有三种类型的 Javascript 文件需要运行:background、content_scripts和devtools_page。第一种类型不涉及此漏洞,因此我们将忽略它。
content_scripts会注入到符合 URL 要求的网页中。需要注意的是,vue-devtools 并没有明确设置 all-frames 为true,因此content_scripts只会注入到 tab 中最上面的 frame 中。
devtools_page当用户打开浏览器的开发人员工具(通过热键F12或Ctrl+Shift+I右键单击->“检查”)时将会加载。
扩展程序的 content_scripts 之一detector.js添加了消息事件的事件监听器。它会检查消息是否从当前帧发送,并且已vueDetected设置为 true,然后将我们的消息转发给 chrome.runtime API。
window.addEventListener('message', e => {
if (e.source === window && e.data.vueDetected) {
chrome.runtime.sendMessage(e.data)
}
})
当用户打开浏览器的开发者工具时,devtool_pagedevtools-background.html将被加载。它只是嵌入devtools-background.js在脚本标签中。此脚本处理从 发送的消息chrome.runtime.sendMessage。
chrome.runtime.onMessage.addListener(request => {
if (request === 'vue-panel-load') {
onPanelLoad()
} else if (request.vueToast) {
toast(request.vueToast.message, request.vueToast.type) // vulnerable
} else if (request.vueContextMenu) {
onContextMenu(request.vueContextMenu)
}
})
在toast函数中我们可以看到参数message是通过模板字符串type传入的src,然后src在“inspectedWindow”中执行。
function toast (message, type = 'normal') {
const src = `(function() {
VUE_DEVTOOLS_TOAST(\`${message}\`, '${type}');
})()`
chrome.devtools.inspectedWindow.eval(src, function (res, err) {
if (err) {
console.log(err)
}
})
}
由于message和type在添加到 src 之前没有经过清理,我们可以制作一条特殊消息来逃离__VUE_DEVTOOLS_TOAST__函数,并注入任意 javascript 代码来执行。
请注意,使用和传递消息可用于一个扩展的任何部分。这意味着可以从一个选项卡发送特制消息,并在其他选项卡上运行注入的 javascript 代码。chrome.runtime.onMessagechrome.runtime.sendMessage
这张图描述了此漏洞中消息的处理方式
漏洞描述
在 中devtools-background.js,函数中存在代码注入toast。它可以由任意选项卡中的 postMessage 触发,从而导致在打开浏览器的开发者工具(F12)时发生通用 XSS。攻击者可以托管一个特制的网页来利用此漏洞,然后诱使用户查看该网页并在其他 Chrome 选项卡中打开开发者工具(F12)。
技术细节
Chrome 扩展程序的 中manifest.json,有三种类型的 Javascript 文件需要运行:background、content_scripts和devtools_page。第一种类型不涉及此漏洞,因此我们将忽略它。
content_scripts会注入到符合 URL 要求的网页中。需要注意的是,vue-devtools 并没有明确设置 all-frames 为true,因此content_scripts只会注入到 tab 中最上面的 frame 中。
devtools_page当用户打开浏览器的开发人员工具(通过热键F12或Ctrl+Shift+I右键单击->“检查”)时将会加载。
扩展程序的 content_scripts 之一detector.js添加了消息事件的事件监听器。它会检查消息是否从当前帧发送,并且已vueDetected设置为 true,然后将我们的消息转发给 chrome.runtime API。
window.addEventListener('message', e => {
if (e.source === window && e.data.vueDetected) {
chrome.runtime.sendMessage(e.data)
}
})
当用户打开浏览器的开发者工具时,devtool_pagedevtools-background.html将被加载。它只是嵌入devtools-background.js在脚本标签中。此脚本处理从 发送的消息chrome.runtime.sendMessage。
chrome.runtime.onMessage.addListener(request => {
if (request === 'vue-panel-load') {
onPanelLoad()
} else if (request.vueToast) {
toast(request.vueToast.message, request.vueToast.type) // vulnerable
} else if (request.vueContextMenu) {
onContextMenu(request.vueContextMenu)
}
})
在toast函数中我们可以看到参数message是通过模板字符串type传入的src,然后src在“inspectedWindow”中执行。
function toast (message, type = 'normal') {
const src = `(function() {
VUE_DEVTOOLS_TOAST(\`${message}\`, '${type}');
})()`
chrome.devtools.inspectedWindow.eval(src, function (res, err) {
if (err) {
console.log(err)
}
})
}
由于message和type在添加到 src 之前没有经过清理,我们可以制作一条特殊消息来逃离__VUE_DEVTOOLS_TOAST__函数,并注入任意 javascript 代码来执行。
请注意,使用和传递消息可用于一个扩展的任何部分。这意味着可以从一个选项卡发送特制消息,并在其他选项卡上运行注入的 javascript 代码。chrome.runtime.onMessagechrome.runtime.sendMessage
这张图描述了此漏洞中消息的处理方式
当黑客不讲武德 安全专家也容易被骗
漏洞研究者是大家心目中的安全专家,然而当安全专家的心理弱点被不讲武德的黑客利用,专家电脑上高价值的智力资产就会处于危险的境地,然而更危险的是这些本用于研究目的信息中如果存在可被武器化的内容,就导致研究人员无意中成为这些黑客的帮凶。
事件影响
26日,谷歌威胁分析小组披露了一系列来自东北亚某国黑客组织的针对安全研究人员(尤其是漏洞研究人员)的攻击活动。攻击者使用疑似Lazarus APT组织的攻击基础设施,结合非常具有迷惑性的社工操作,骗取受害者信任,并可能以盗取安全公司电脑上的高价值漏洞研究资料达到攻击目的。目前国内已有一定数量的安全研究人员受到这个组织的欺骗,其研究电脑的敏感信息泄露。
攻击技巧
攻击者为了与安全研究者建立互信并保持联系,首先会在一些社交媒体上发布一些漏洞研究博客和Twitter,吸引相关研究者的关注。其已知的攻击策略有两种:
(1)在Twitter上进行一段时间的技术交流获得研究者信任后,攻击者会询问研究人员是否愿意开展合作研究,并向受害研究人员提供一个经过PGP加密的所谓“开展漏洞研究的VS源码项目”。其中在编译配置文件中调用了一段powershell脚本,加载了第一阶段的恶意DLL,进行一系列持久化配置在受害的研究者电脑建立后门,并与其C2服务建立连接,成为一个被控的目标。
(2)攻击者Twitter会链接到他们搭建的以漏洞研究博客为内容却包含疑似漏洞利用恶意代码的水坑站点。当受害者浏览相关页面时,其电脑将被安装一个恶意服务,并启动一个内存后门程序,开始与攻击者的C2建立连接,成为一个被控的目标。
在此,攻击者利用了安全研究人员的多个心理弱点:
(1)研究者往往以为攻击者是个安全研究同行,且攻击者并不像其他漏洞贩子那样有金钱诉v求,并在github上有长达近一年的持续内容更新,导致研究者降低了心理防御;
(2)漏洞研究者收到的攻击者的VS代码看来是明文,而研究者往往忽视对待编译代码配置文件的审计,意识不到编译过程中恶意代码就会执行;
攻击溯源
对比Lazarus组织2020年9月的攻击活动,从攻击者使用的C2域名,攻击技巧和恶意代码,可发现本次攻击事件Lazarus APT组织具有较大关联性。
(1)在基础设施上,有与Lazarus关联的C2(www.dronerc[.]it ,www.fabioluciani[.]com ),且使用的url有很大相似性:(2)在攻击手法上,通过rundll32 加载恶意文件,传入16位随机字符串解密密钥“5I9YjCZ0xlV45Ui8”,payload命名方式(都以db为后缀),也与Lazarus组织2020年9月攻击活动的手法相似:
漏洞研究者是大家心目中的安全专家,然而当安全专家的心理弱点被不讲武德的黑客利用,专家电脑上高价值的智力资产就会处于危险的境地,然而更危险的是这些本用于研究目的信息中如果存在可被武器化的内容,就导致研究人员无意中成为这些黑客的帮凶。
事件影响
26日,谷歌威胁分析小组披露了一系列来自东北亚某国黑客组织的针对安全研究人员(尤其是漏洞研究人员)的攻击活动。攻击者使用疑似Lazarus APT组织的攻击基础设施,结合非常具有迷惑性的社工操作,骗取受害者信任,并可能以盗取安全公司电脑上的高价值漏洞研究资料达到攻击目的。目前国内已有一定数量的安全研究人员受到这个组织的欺骗,其研究电脑的敏感信息泄露。
攻击技巧
攻击者为了与安全研究者建立互信并保持联系,首先会在一些社交媒体上发布一些漏洞研究博客和Twitter,吸引相关研究者的关注。其已知的攻击策略有两种:
(1)在Twitter上进行一段时间的技术交流获得研究者信任后,攻击者会询问研究人员是否愿意开展合作研究,并向受害研究人员提供一个经过PGP加密的所谓“开展漏洞研究的VS源码项目”。其中在编译配置文件中调用了一段powershell脚本,加载了第一阶段的恶意DLL,进行一系列持久化配置在受害的研究者电脑建立后门,并与其C2服务建立连接,成为一个被控的目标。
(2)攻击者Twitter会链接到他们搭建的以漏洞研究博客为内容却包含疑似漏洞利用恶意代码的水坑站点。当受害者浏览相关页面时,其电脑将被安装一个恶意服务,并启动一个内存后门程序,开始与攻击者的C2建立连接,成为一个被控的目标。
在此,攻击者利用了安全研究人员的多个心理弱点:
(1)研究者往往以为攻击者是个安全研究同行,且攻击者并不像其他漏洞贩子那样有金钱诉v求,并在github上有长达近一年的持续内容更新,导致研究者降低了心理防御;
(2)漏洞研究者收到的攻击者的VS代码看来是明文,而研究者往往忽视对待编译代码配置文件的审计,意识不到编译过程中恶意代码就会执行;
攻击溯源
对比Lazarus组织2020年9月的攻击活动,从攻击者使用的C2域名,攻击技巧和恶意代码,可发现本次攻击事件Lazarus APT组织具有较大关联性。
(1)在基础设施上,有与Lazarus关联的C2(www.dronerc[.]it ,www.fabioluciani[.]com ),且使用的url有很大相似性:(2)在攻击手法上,通过rundll32 加载恶意文件,传入16位随机字符串解密密钥“5I9YjCZ0xlV45Ui8”,payload命名方式(都以db为后缀),也与Lazarus组织2020年9月攻击活动的手法相似:
浅谈Springboot中的文件上传
在JavaWeb应用中,任意文件上传一直是关注的重点,攻击者通过上传恶意jsp文件,可以获取服务器权限。但是在Springboot框架对JSP解析存在一定的限制。Spring官方原文如下,大概意思是jsp对内嵌的容器的支持不太友好,推荐使用thymeleaf这类的模版引擎进行渲染。
那么针对Springboot应用,即使存在任意文件上传缺陷,按照传统的思路直接上传jsp文件,也是无法达到理想的效果的。下面通过查看其具体的实现方式来看看有没有相关的利用思路,同时在日常项目开发中应该注意些什么。
Springboot文件上传的实现
首先看看在Springboot中如何实现文件上传功能,在网上找了个教程,Controller的代码如下,Spring会自动解析multipart/form-data请求,将multipart中的对象封装到MultipartRequest对象中
在JavaWeb应用中,任意文件上传一直是关注的重点,攻击者通过上传恶意jsp文件,可以获取服务器权限。但是在Springboot框架对JSP解析存在一定的限制。Spring官方原文如下,大概意思是jsp对内嵌的容器的支持不太友好,推荐使用thymeleaf这类的模版引擎进行渲染。
那么针对Springboot应用,即使存在任意文件上传缺陷,按照传统的思路直接上传jsp文件,也是无法达到理想的效果的。下面通过查看其具体的实现方式来看看有没有相关的利用思路,同时在日常项目开发中应该注意些什么。
Springboot文件上传的实现
首先看看在Springboot中如何实现文件上传功能,在网上找了个教程,Controller的代码如下,Spring会自动解析multipart/form-data请求,将multipart中的对象封装到MultipartRequest对象中
再聊钓鱼文档
XLM Macro(Excel 4.0)
与一般的office文档不同的是,其格式为XLM,不同于其他的XML,XLM被创建于1992年,比VBA还要早出很多。
XLM Macro(Excel 4.0)
与一般的office文档不同的是,其格式为XLM,不同于其他的XML,XLM被创建于1992年,比VBA还要早出很多。
❤1