首页 > 其他分享 >记一次2022某地HVV中的逆向分析

记一次2022某地HVV中的逆向分析

时间:2023-01-05 20:11:15浏览次数:57  
标签:某地 key int 地址 异或 内存 2022 网安 HVV

前言

事情是这样的,国庆前期某地HVV,所以接到了客户通知他们收到了钓鱼邮件想要溯源

image-20230104172700286

直接下载文件逆向分析一波。钓鱼邮件,图标什么的做的还是挺逼真的,还真的挺容易中招的,但是这里的bug也明显,丹尼斯没有客户端,百度一下能够辨别这是钓鱼的。

逆向分析

查壳工具DIE看是否加壳

image-20230103141604176

当然其他查壳工具也可以exeinfope等,看到的东西不一样

image-20230103142926987

可以看到是64位的应用,无壳,IDA静态分析

image-20230103154754832

直接进入主函数,直接F5逆向main函数c代码

image-20230103154954253

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

主函数中使用的函数比较少

int __cdecl main(int argc, const char **argv, const char **envp)
{
  HRSRC ResourceW; // rbx
  HGLOBAL Resource; // rbp
  signed int v5; // eax
  size_t v6; // rsi
  size_t v7; // rcx
  void *v8; // rdi
​
  ResourceW = FindResourceW(0i64, (LPCWSTR)0x66, L"DATA");
  Resource = LoadResource(0i64, ResourceW);
  v5 = SizeofResource(0i64, ResourceW);
  v6 = v5;
  v7 = (unsigned int)(v5 + 1);
  if ( v5 == -1 )
    v7 = -1i64;
  v8 = malloc(v7);
  memset(v8, 0, (int)v6 + 1);
  memcpy(v8, Resource, v6);
  sub_140001070(v8);
  return 0;
}

简单来看就是先查找资源,DATA应该为加密的shellcode,加载资源赋

Resource,计算资源空间大小,malloc分配空间大小,memset 将申请的内存初始化为0,memcpy函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,跟进sub_140001070

image-20230103173426982

可以看到反汇编之后在第52行创建进程,在56行分配虚拟内存,60行写入内存,61行创建线程,这里创建的线程即为恶意进程。这里使用动态调试x96dbg验证我们的分析另外,需要分析一下外联的地址以及注入的进程是什么,64位的应用使用x64dbg,依次下断点

简单计算一下地址,IDA的起始地址为00000001400015C4

image-20230104105921636

FindResourcew地址为00000001400015C4

image-20230104110146017

在x64dbg中找到起始地址00007FF638B915C4

image-20230104110245628

根据偏移量跳转下断点

image-20230104110537142

image-20230103180338368

F7按步调试

image-20230104113546489

loadResource函数中追踪内存

image-20230104113636171

这里加载的是DATA的内容,即为加密的shellcode,我们直接用Resouce hacker直接查看一下恶意进程dennis.exe的DATA内容

image-20230103175035753

说明我们的分析没有问题,继续向下调试

image-20230104132427466

因为这个应用比较小,所以代码量也不大,f5反编译之后可以直接找到函数下断点,这里不需要计算偏移量了,计算方法跟上面差不多。

image-20230104134458824

调试走到这里,可以发现走的是循环

image-20230104161509292

可以明显的看到有xor异或指令,这里对shellcode即DATA的内容做异或,异或的对象为byte ptr指向的地址,内存数据为key,那么key的内容为

image-20230104162423546

因为是按字节异或所以这里异或的内存应该为78,整个循环异或的key应该为12345678,shellcode加密的时候应该用的key为12345678加密的,所以这里解密使用key去解密,跳出循环RIP一下,到断点CreateProcessW

image-20230104163015456

可以清晰的看到注入的进程为C:\\windwos\\system32\\svchost.exe,向下调试

image-20230104163319151

申请虚拟空间内存,然后向下为写入内存

image-20230104163411764

解密完成后写入内存,所以在这里是可以看到外联的ip地址或者说是域名的,这里使用的是ip,查询之后发现是腾讯云的服务器。

image-20230104163924966

在向下就是创建进程起服务svchost.exe

小结

钓鱼使用的服务器ip地址是某云,怕是可以溯源到本人的真实身份了吧,毕竟现在国内运营商都需要实名,如果用的国内域名也都是实名的不管是否有CDN,不过这种级别的HVV也没必要。第一次逆向分析,多亏了大佬指点,步履维艰,如有错误欢迎指出。

更多靶场实验练习、网安学习资料,请点击这里>>

 

标签:某地,key,int,地址,异或,内存,2022,网安,HVV
From: https://www.cnblogs.com/hetianlab/p/17028756.html

相关文章

  • [unity 2022 2d] unity项目的导入(三)
       创建这些文件夹接下来通过资源管理器打开该项目并进入art   创建以下六个文件夹  进入adventure同时另开一个之前下载的压缩包窗口 以资源管理......
  • c++算法练习day01【2022年蓝桥杯省赛B组题目】每天做一点、、、
    这个练习目前来说就比较宽松,打算在寒假(基本也就是这一个月每天刷几道题吧)题目一:小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做a道题目,周六和周......
  • [unity 2022 2d]项目创建,素材下载和软件初始化(二)
    一、项目创建        选择新建项目        2D和2D(URP)主要区别在于渲染模式的不同,选哪个都行。 ......
  • LeetCode Badge 2022 All In One
    LeetCodeBadge2022AllInOneYou’vewon50DaysBadge2022!Congratulations!It'sanawardforuserssolvingproblemsfor50+daysin2022.Checkouttheba......
  • Apache RocketMQ 斩获 InfoQ 2022 年度十大开源新锐项目
    以“深入数字经济·洞见技术价值”为主题的【InfoQ2022中国技术力量年终榜单】正式公布获奖名单。其中,ApacheRocketMQ以其卓越的易用性、社区活跃性、成熟度、产品优越性......
  • [unity 2022]unity安装(一)
    一、1、unity官网下载unityhub    官网网址:https://unity.com/    注册登录需要手机下载unityconnect    2、登录在左侧菜单栏......
  • Apache RocketMQ 斩获 InfoQ 2022 年度十大开源新锐项目
    以“深入数字经济·洞见技术价值”为主题的【InfoQ2022中国技术力量年终榜单】正式公布获奖名单。其中,ApacheRocketMQ以其卓越的易用性、社区活跃性、成熟度、产品优越......
  • 2022 最新版 JDK 17 下载与安装 步骤演示 (图示版)
     JDK17目录第一步:oracle官网搜jdk,会出现如下界面第二步:安装第三步:选是第四步:下一步第五步:修改安装位置5.1点击更改,进入系统文件目......
  • 2022年终总结
    我一向是不喜欢写什么总结的,就像我小时候不喜欢写各种观后感(即便如此我小作文写的还是不错的)。但是今年我觉得应该写点什么了,经历了起落落落的状态,多少有些感慨需......
  • 机器学习 吴恩达2022 第一章 笔记
    1.第一周  这篇笔记很多源自这位大佬,我实在是打不出这么多字(.)1.1什么是机器学习  机器学习是什么?在本视频中,我们会尝试着进行定义,同时让你懂得何时会使用机器学......