首页
社区
课程
招聘
[推荐]看雪.纽盾 KCTF 2019 Q3 | 第二题点评及解题思路
发表于: 2019-9-26 17:48 3873

[推荐]看雪.纽盾 KCTF 2019 Q3 | 第二题点评及解题思路

2019-9-26 17:48
3873

长久以来,佣兵辗转于不同主人之间,用血肉之躯为自己赢得一席之地。朝不保夕,危险,背叛和死亡都是家常便饭。今天的朋友可能是明日的敌人,过去的对手也能摇身一变成为如今的同盟。但仍有杰出者脱颖而出,人称他为“龙”。龙不仅是收钱杀人,更以强烈的领袖气质将亡命之徒们团结起来,发展为强大的佣兵组织。曹操多次雇佣龙为自己效命,此后,曹操巧妙撩拨着龙的野心。龙产生了摆脱佣兵身份,成为人上之人的渴望。杀死战神吕布,则是实现这个梦想的第一步。数年后,曹操的大军席卷了三国,却在长坂坡遭遇前所未有的重挫。惊天动地的雷霆涤荡着曹军引以自豪的名将——赵子龙。



攻破此题的战队排名一览:



这道题是一系列连载题中的一道题。和上一次的题相比,加入了反调试,而且虚拟执行的部分强化了很多。CPU指令更是增加了多种混淆,让题目的难度更上一层楼!





野生程序猿,临床医学专业转行,现在北京某网络安全研究院工作,研究分析内核,对黑科技以及产品架构有很大兴趣,在编写分析内核的同时设计出一款恶意代码分析神器,适合安服和人员使用,欢迎找我索取内测版,kctf中的战神伽罗系列题目某种程度上反应了本猿平时的工作特征,本系列赛题将会和你一起不断进化,成长,欢迎继续关注,感谢看雪!感谢有你参与!













realSnCheck调用477778与之前类似



1.0 ---dephi+jscrypt 内存中暴露了key

2.0--- dephi+代码重定位 +VMP;虽然有vmp但是主要算法在代码重定位部分

3.0--- dephi+代码重定位 +VMP:所有代码都在vmp

4.0---dephi+代码重定位 +VMP:算法复杂化



合作伙伴


原文链接:https://mp.weixin.qq.com/s/fFBKE4IHV7BRjoCyCXEnUQ

长久以来,佣兵辗转于不同主人之间,用血肉之躯为自己赢得一席之地。朝不保夕,危险,背叛和死亡都是家常便饭。今天的朋友可能是明日的敌人,过去的对手也能摇身一变成为如今的同盟。但仍有杰出者脱颖而出,人称他为“龙”。龙不仅是收钱杀人,更以强烈的领袖气质将亡命之徒们团结起来,发展为强大的佣兵组织。曹操多次雇佣龙为自己效命,此后,曹操巧妙撩拨着龙的野心。龙产生了摆脱佣兵身份,成为人上之人的渴望。杀死战神吕布,则是实现这个梦想的第一步。数年后,曹操的大军席卷了三国,却在长坂坡遭遇前所未有的重挫。惊天动地的雷霆涤荡着曹军引以自豪的名将——赵子龙。





题目简介


本题共有1490人围观,最终只有9支团队攻破成功。其中金左手战队一马当先,在开赛当天就以最快的速度破解此题。


攻破此题的战队排名一览:



不知道这道题有没有让你苦思冥想呢?接下来我们一起来看一下这道题的点评和详细解析吧。


看雪评委crownless点评


这道题是一系列连载题中的一道题。和上一次的题相比,加入了反调试,而且虚拟执行的部分强化了很多。CPU指令更是增加了多种混淆,让题目的难度更上一层楼!



出题团队简介


本题出题战队 战神伽罗 :



战神伽罗团队成员只有simpower一个人,但依然出了难度很高的题,下面是相关简介:

野生程序猿,临床医学专业转行,现在北京某网络安全研究院工作,研究分析内核,对黑科技以及产品架构有很大兴趣,在编写分析内核的同时设计出一款恶意代码分析神器,适合安服和人员使用,欢迎找我索取内测版,kctf中的战神伽罗系列题目某种程度上反应了本猿平时的工作特征,本系列赛题将会和你一起不断进化,成长,欢迎继续关注,感谢看雪!感谢有你参与!



设计思路


1、首先将一部分密码封装在javascript中,通过javascript将自身进行加密。


2、通过简单的汇编代码变形算法 (加减固定数值) ,将一部分密码代码编译到可执行区域,通过指令跳转和对硬编码的变形对这部分密码进行恢复比对。
3、将恢复的代码注入到IE内核当中,并显示出来。

4、增加了一些反调试。

5、密码部分增加了混淆。

6、CPU指令增加了多种混淆。


破解思路:


1、有多种反调试机制,破解方法网上有,反调对抗过试之后,搜索内存可以搜到javascript代码,并将代码中的一部分密码获取出来。


2、解密后代码,密码为:simpower91


function ckpswd() {
    key="Simpower91";
    a = document.all.pswd.value;
    if (a.indexOf(key) ==0) {
        l=a.length;
        i=key.length;
        sptWBCallback(a.substring(i,l));
    } else {
        alert("wrong!<" + a + "> is not my GUID ;-)");
        return "1234";
    }
}
function ok(){
  alert("congratulations!");
}


3、剩下4位很容易就可以跟踪到比对代码的那个call处,有多个很怪异的指令被跳过,将 每个字节-7F就是剩余的ascii码 。


由于有多个这样的字节,因此需要尝试一下,经过尝试后,得到如下密码:

其中E0-7F='a'B2-7F='3'
B1-7F='2'B0-7F='1'


界面如下所示(注册成功后):



解题思路


本题解题思路由看雪论坛oooAooo提供:




概述


1、依然是dephi+脚本形式。

2、与前版相比加入了反调试。

3、与前版相比解密部分全部用虚拟机实现,不会用代码执行非虚拟机指令。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-10-10 13:35 被Editor编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
2
tql
最后于 2019-9-26 17:53 被KevinsBobo编辑 ,原因:
2019-9-26 17:53
0
游客
登录 | 注册 方可回帖
返回
//