Lazarus远控组件NukeSped分析

静态信息:

样本md5:9b656f5d7e679b94e7b91fc3c4f313e4

由此可见为假的Adobe Flash Player 的攻击样本

在这里插入图片描述
在这里插入图片描述

样本分析

在这里插入图片描述
通过五个函数,内部调用sub_40159D函数动态获取API函数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
利用IDA python解密字符串。。

完整python代码

Python> idc.get_segm_name(here())
'.text'
Python> idc.GetDisasm(here())
'call    sub_405060'Python>idc.print_insn_mnem(here())
'call'
Python>idc.print_operand(here(),0)
'sub_405060'
Python>idc.print_operand(here(),1)
''

idc.get_operand_value(ea,n)获取操作数的值。

在这里插入图片描述

完整python代码

from idaapi import *
import idcfrom idaapi import *
import idc
def get_string(addr):out = ""while True:if Byte(addr) != 0:out += chr(Byte(addr))else:breakaddr += 1return outdef get_stringlen(addr):out = ""while True:if idc.get_wide_byte(addr)!= 0:out += chr(idc.get_wide_byte(addr))else:breakaddr += 1return addrdef get_function_argv(addr):for x in range(4):addr = idc.prev_head(addr)print("%08x" %addr)if idc.print_insn_mnem(addr) == "push" and "offset" in idc.print_operand(addr,0):print("GET success")print("%08x" %addr)return idc.get_operand_value(addr,0)else : print("NO")
def get_retn(addr):for x in range(4):addr = idc.next_head(addr)if idc.print_insn_mnem(addr) == "mov":print("retn success")print("%08x" %addr)return idc.get_operand_value(addr,0)else :print("NO")def Mydecrypt(stringstart,stringend):output = ""for i in range(stringstart,stringend):v3 = idc.get_wide_byte(i)print(v3)if idc.get_wide_byte(i)<97 or v3 > 122:continueif idc.get_wide_byte(i) < 101 or v3 >106:if idc.get_wide_byte(i)<116 or v3 >121:continuev4 = v3 - 15else :v4 = v3 +15ida_bytes.patch_byte(i,v4)for i in range(stringstart,stringend):output += chr(idc.get_wide_byte(i))return outputdanger_funcs = ["getapi"] # 需要寻找的函数名
for func in danger_funcs:addr = get_name_ea_simple( func )print("call sub_40159D:%08x" %addr)
cross_refs = CodeRefsTo( addr, 0 )
for addr in cross_refs:print("..................")print( "%08x" % addr)print("get_function_argv start")stringstart = get_function_argv(addr)print( "%08x" %stringstart)stringend = get_stringlen(stringstart)result = Mydecrypt(stringstart,stringend)print(result)idc.set_cmt(stringstart, result, 0)idc.set_name(stringstart, result, SN_FORCE)print("..................") apiaddr = get_retn(addr)print("%08x" %apiaddr)idc.set_name(apiaddr, result, SN_FORCE)

已经被修改,伪代码没修改过来,N -> create name anyway,这样就方便静态分析了

在这里插入图片描述

在这里插入图片描述

调用GetModuleFileName获取当前的运行进程路径并将其写入到Run注册表中以实现本地持久化,写入的注册表键值为msnconf

在这里插入图片描述

继续跟到sub_402811函数:

再次调用五个函数动态获取API函数地址

sub_4021EE:

打开文件成功就读取文件到dword_40B498,buffer:0040AEB0,大小0x36Eu,打开文件失败则,memset对dword_40B498地址后0x36Eu大小 区域置零,

在这里插入图片描述

地址布局:

在这里插入图片描述

从unk_40B5A2开始,每0x10填充一个02

之后将IP和端口填充到前面用02分割的内存空间中,填充的02是connect参数sockaddr结构体中的sa_family。
在这里插入图片描述

int  main( ){printf("%d /n",htons(16));return 0;
}
得到的结果是4096
解释如下,数字16的16进制表示为0x0010,数字4096的16进制表示为0x1000。 由于Intel机器是小尾端,存储数字16时实际顺序为1000,存储4096时实际顺序为0010。因此在发送网络包时为了报文中数据为0010,需要经过htons进行字节转换。
数字所占位数小于或等于一个字节(8 bits)时,不要用htons转换

在这里插入图片描述

在这里插入图片描述

sub_402E9C:根据时间因子得到随机数,加上地址,可以从5个ip中随机获取一个,建立socket连接,成功连接尝试向C2发送测试数据,成功,则将0x40B498地址处的内容发送到C2,服务器可根据该请求值判断当前攻击进行到哪一阶段,若失败则休眠60秒后 重新生成随机数再次请求,若第二次请求成功,尝试将0x40B498地址处的内容发送到C2:

在这里插入图片描述

成功上线后,向C2发送0x1243451,接收返回值传入Switch_case中

Switch_case:

在这里插入图片描述

如果有nls文件

在这里插入图片描述

sub_4020F6 :通过时间获得随机数
在这里插入图片描述

​ 若本地存在c_126705.nls文件,该地址将指向文件内容

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB副本集环境搭建(以单机Windows为例)

前言 近期有搭建MongoDB副本集的需求,简单记录一下搭建过程(以本地Windows环境为例)。 一、副本集选型 1 Primary节点、1 Secondary 节点、1 Arbiter节点模式副本集环境搭建。 二、搭建过程 1. 安装MongoDB服务 下载地址:https://www.mongodb.com,如下图所示: 选择…

android 13 相册和拍照问题

android 在13以下。拍照和从相册选取图片需要使用 存储权限&#xff0c;相机权限。 在使用时候 需要声申请 Manifest.permission.WRITE_EXTERNAL_STORAGEManifest.permission.CAMERA 这2个权限。 但是在android 13以及以上时候&#xff0c;不需要申请 Manifest.permission…

基于Springboot旅游网站管理系统设计和实现

基于Springboot旅游网站管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

7.卷积神经网络与计算机视觉

计算机视觉是一门研究如何使计算机识别图片的学科&#xff0c;也是深度学习的主要应用领域之一。 在众多深度模型中&#xff0c;卷积神经网络“独领风骚”&#xff0c;已经被称为计算机视觉的主要研究根据之一。 一、卷积神经网络的基本思想 卷积神经网络最初由 Yann LeCun&a…

UE4_碰撞_自定义碰撞检测通道

效果如图&#xff1a; 1、项目设置中新建追踪检测通道weapon&#xff0c;默认值为忽略。 2、新建几个actor作为枪&#xff0c;碰撞预设全部设为自定义&#xff0c;把新建的检测响应weapon设为阻挡。 3、角色进行射线检测 运行效果如下&#xff1a; 发现有些物体碰不到&#xff…

GetSystemTimes:获取CPU占用率(WIN API)

原文链接&#xff1a;https://blog.csdn.net/qq_28742901/article/details/104960653 GetSystemTimes函数&#xff1a; BOOL WINAPI GetSystemTimes(__out_opt LPFILETIME lpIdleTime, // 空闲时间__out_opt LPFILETIME lpKernelTime, // 内核进程占用时间__out_opt LPFILETI…

蓝桥杯 本质上升序列

题目描述: 小蓝特别喜欢单调递增的事物。 在一个字符串中&#xff0c;如果取出若干个字符&#xff0c;将这些字符按照在字符串中的顺序排列后是单调递增的&#xff0c;则成为这个字符串中的一个单调递增子序列。 例如&#xff0c;在字符串 lanqiao 中&#xff0c;如果取出字符…

模型训练----将pth模型转换为onnx

目录 1 安装需要的环境2、模型转换3、测试onnx模型 Github代码 1 安装需要的环境 需要在虚拟环境中安装onnx和onnxruntime&#xff08;GPU&#xff09;&#xff0c;环境和自己的cuda版本要对应上查询链接 激活环境&#xff0c;查看环境的cuda版本,我是cuda11.6 cudnn8302&a…

AI预测福彩3D第22弹【2024年3月31日预测--第5套算法开始计算第4次测试】

今天&#xff0c;咱们继续进行本套算法的测试&#xff0c;今天为第四次测试&#xff0c;仍旧是采用冷温热趋势结合AI模型进行预测。好了&#xff0c;废话不多说了。直接上结果~ 仍旧是分为两个方案&#xff0c;1大1小。 经过人工神经网络计算并进行权重赋值打分后&#xff0c;3…

js怎样获取到时间戳?

1.获取到时间戳精确到秒&#xff0c;13位&#xff1b; let timestamp Date.parse(new Date()); console.log(timestamp);//输出 1591669256000 13位2.获取到时间戳精确到毫秒&#xff0c;13位&#xff1b; let timestamp Math.round(new Date()); console.log(timestamp)…

开源翻译大模型

开源翻译大模型 1 简介 在开发过程中&#xff0c;会遇到定制化翻译工具的需要&#xff0c;开源的翻译模型可以解决相应的问题。其中英语转中文的比较好的开源项目有&#xff1a; 序号组织模型地址备注1赫尔辛基大学语言技术研究小组&#xff08;Language Technology Researc…

rust嵌入式开发之await

嵌入式经常有类似通过串口发送指令然后等待响应再做出进一步反应的需求。比如&#xff0c;通过串口以AT命令来操作蓝牙模块执行扫描、连接&#xff0c;需要根据实际情况进行操作&#xff0c;复杂的可能需要执行7、8条指令才能完成连接。 对于这样的需求&#xff0c;如果用异步…

如何使用Axure RP制作网页原型并结合IIS服务实现公网访问本地HTML网页

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

SSH免密登录——linux

SSH免密登录——linux 方法一一、用 ssh-key-gen 在本地主机上创建公钥和密钥二、用 ssh-copy-id 把客户端公钥追加到远程主机的 .ssh/authorized_key 上三、直接登录远程主机 方法二一、将生成的客户端公钥id_rsa.pub内容追加至目标主机.ssh/authorized_key 中参考链接 SSH免密…

动态规划-----背包类问题(0-1背包与完全背包)详解

目录 什么是背包问题&#xff1f; 动态规划问题的一般解决办法&#xff1a; 0-1背包问题&#xff1a; 0 - 1背包类问题 分割等和子集&#xff1a; 完全背包问题&#xff1a; 完全背包类问题 零钱兑换II: 什么是背包问题&#xff1f; 背包问题(Knapsack problem)是一种…

日历插件fullcalendar【笔记】

日历插件fullcalendar【笔记】 前言版权开源推荐日历插件fullcalendar一、下载二、初次使用日历界面示例-添加事件&#xff0c;删除事件 三、汉化四、动态数据五、前后端交互1.环境搭建-前端搭建2.环境搭建-后端搭建3.代码编写-前端代码fullcalendar.htmlfullcalendar.js 4.代码…

【更新】在湘源7、8中使用2023年11月国空用地用海分类

之前为了做控规&#xff0c;从湘源8中扒了一套国空用地用海的绘图参数给湘源7使用。 【预告】在湘源控规7中使用 国空用地用海分类标准 但是部里在2023年11月又发布了一套新的用地用海分类。 本想去湘源8里面再扒一下&#xff0c;结果发现湘源8自己还没有更新呢&#xff0c;…

free pascal:字符串模糊匹配库 FuzzyWuzzy 的编译过程

访问&#xff1a;pypi.org 搜索 fuzzywuzzy 访问&#xff1a;fuzzywuzzy PyPI 用鼠标滚动网页到底部&#xff0c;可见&#xff1a;Free Pascal: FuzzyWuzzy.pas (Free Pascal port) 下载 FuzzyWuzzy.pas-master.zip 后解压到当前目录。 cd D:\lazarus\projects\FuzzyWuz…

redis学习-redis配置文件解读

目录 1.单位说明 2. include配置 3. network网络配置 3.1 bind绑定ip配置 3.2保护模式protected-mode配置 3.3端口号port配置​编辑 3.4超时断开连接timeout配置 4. general通用配置 4.1守护进程模式daemonize配置 4.2进程id存放文件pidfile配置 4.3日志级别loglevel配置 4.…

实时数仓建设实践——滴滴实时数据链路组件的选型

目录 前言 一、实时数据开发在公司内的主要业务场景 二、实时数据开发在公司内的通用方案 三、特定场景下的实时数据开发组件选型 3.1 实时指标监控场景 3.2 实时BI分析场景 3.3 实时数据在线服务场景 3.4 实时特征和标签系统 四、各组件资源使用原则 五、总结和展望…