首页 > 其他分享 >如何查看加壳的恶意软件 Lab1-2 Lab1-3 恶意代码分析

如何查看加壳的恶意软件 Lab1-2 Lab1-3 恶意代码分析

时间:2023-08-02 19:35:55浏览次数:40  
标签:__ exe 函数 恶意代码 恶意软件 dll 加壳 Lab1 导入

Lab1-2

分析Lab1.2.exe文件

目录

Lab1-2

2. 是否有这个文件被加壳或混淆的任何迹象?

3. 有没有任何导入函数能够暗示出这个程序的功能?

4. 哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?


 

2. 是否有这个文件被加壳或混淆的任何迹象?

利用PEID进行查看

普通扫描如下:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_初始化

普通扫描没有发现加壳

 

然后看section,name是upx。

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_02

==》对比下脱壳后的效果:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_加壳_03

 

 

 

但注意到了EP Section中的标识为UPX1,说明这个exe文件很可能用了一个UPX技术的变种

然后我们用Dependency Walker,我们就会发现这个代码的导入表KERNEL32.DLL 中有两个函数LoadLibraryA,GetProcAddress.这两个函数都是加壳的迹,因为加壳的程序运行时候脱壳是必须要这两个函数的.

 

下面再使用PE viewer进一步检测:

首先该程序的节部分就非常的可疑,这里显示的是UPX0,UPX1,UPX2.不是常见的.text .data .rdata .rsrc,很明显这是UPX加壳后的表现.下面通过虚拟大小与原始数据大小的对比就可以实锤UPX加壳了.

分节

虚拟大小

原始数据大小

UPX0

00004000

00000000

UPX1

00001000

00000600

UPX2

00001000

00000200

IMAGE_SECTION_HEADER UPX0中可得出Virtual Size00004000 Size of Raw Data00000000, 所以Virtual Size 比Size of Raw Data大
IMAGE_SECTION_HEADER UPX1IMAGE_SECTION_HEADER UPX2中的也是Virtual SizeSize of Raw Data大,所以可以确定该程序被加壳了.

 

核心扫描如下:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_安全分析_04

核心扫描发现upx加壳

发现加壳后,要进行脱壳操作,可以利用ollydbg进行手动脱壳,具体操作在另篇博文,博文稍后会发。

或者进行upx自动脱壳

dos命令

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_05

 图形窗口

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_安全分析_06

用free upx也可以脱壳!

 

 

3. 有没有任何导入函数能够暗示出这个程序的功能?

利用studyPe进行查看脱壳后的upLad01-02.exe

 

或者使用微软的strings工具,我的输出:

Practical Malware Analysis Labs\BinaryCollection\Chapter_1L>strings Lab01-02_2022-10-01@13_32_14.745.exe

Strings v2.54 - Search for ANSI and Unicode strings in binary images.
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com

!This program cannot be run in DOS mode.
e
Rich
.text
`.rdata
@.data
@jj

h(0@
  @
Vh(0@
, @
@jjjj
L$,j
@jjj
@jjj
T$
$ @
( @
u+W
=0 @
jjj
@jj

VWj
jjj
hT0@
t @
=p @
jh
h00@

 SVW
` @
\ @
|0@
X @
x0@
T @
=l0@
P @
t0@
5p0@
EPEPE
H @
D @
@ @
8 @
%< @
%L @

%d @
%h @
KERNEL32.DLL
ADVAPI32.dll
MSVCRT.dll
WININET.dll
SystemTimeToFileTime
GetModuleFileNameA
CreateWaitableTimerA
ExitProcess
OpenMutexA
SetWaitableTimer
WaitForSingleObject
CreateMutexA
CreateThread
CreateServiceA
StartServiceCtrlDispatcherA
OpenSCManagerA
_exit
_XcptFilter
exit
__p___initenv
__getmainargs
_initterm
__setusermatherr
_adjust_fdiv
__p__commode
__p__fmode
__set_app_type
_except_handler3
_controlfp
InternetOpenUrlA
InternetOpenA
MalService
Malservice
HGL345
http://www.malwareanalysisbook.com
Internet Explorer 8.0

 或者使用PEID,当然dependency walker也是ok的:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_加壳_07

 

 

 

有对互斥体进行操作的函数OpenMutexA、CreateMutexA函数;

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_安全分析_08

 

有创建服务相关函数:CreateServiceA、StartServiceCtrlDispatcherA、OpenSCManagerA。

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_加壳_09

打开链接函数InternetOpenA和InternetOpenUrlA;

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_初始化_10

 4. 哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?

使用IDA进行分析upLad01-02.exe,Strings窗口中可以发现这个恶意代码的网络迹象。

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_11

 一个Malservice服务名称(邮寄服务),一个链接,一个浏览器类型。

可以通过监视网络流量检查被恶意代码感染的主机。

 

 

Lab1-3

 

分析Lab1.3.exe文件

目录

Lab1-3

2. 是否有这个文件被加壳或混淆的任何迹象?

3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

4.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?


 

2. 是否有这个文件被加壳或混淆的任何迹象?

利用PEiD进行分析

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_初始化_12

程序利用FSG1.0进行加壳操作

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_初始化_13

section异常也表明加壳!

strings看下:

strings Lab01-03.exe

Strings v2.54 - Search for ANSI and Unicode strings in binary images.
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com

!Windows Program
$PE
b!@
`.rdata
@.data

$s!
u?
C
;Ot
(Q@
KERNEL32.dll
LoadLibraryA
GetProcAddress
H @
Ph8
0[X
":Ll
3Bt>O
VQ(8
2]<,M
:R,
P@M^
 3
 S>VW
ey
p1
AQ=h
"Z,
5pg
MNu
02
k '
^J%
I*G9>
{*T
p@l
mal
e%nN
kQc
H @
ole32.vd
Init
FoCr
sc
U!!C
}OLEAUTLA
IMSVCRTT"b
_getmas
yrcs
|P2r3Us
p|vuy
fmod
xF*l
9mV
dj

 这两个,LoadLibraryA GetProcAddress 也表明了加壳!

 

利用ollybdg进行手动脱壳

在尝试了一番之后,我发现这个脱完壳后还得进行修复,就搁置在这里。

我又换了另一种脱壳方式,基于ollybdg的自动化脱壳,软件里面有自带的功能,很好,不用进行修复。

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_安全分析_14

 

使用LinxerUnpacker 进行脱壳:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_15

 

 脱壳后看到的:

 

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_16

 

注意这个section也是怪怪的!

 

3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

查看导入表

好家伙,没见过的玩意。网上搜了话,也不是很懂。

VariantInit函数

Initializes a variant to VT_EMPTY

他的作用很简单,就是初期化为VT_EMPTY。其实这个VariantClear ()已经做了,如果如果调用了它,就可以不用VariantInit()了。

SysAllocString

 是分配内存的. 一般用在  接口的 返回 BSTR 参数,不需要释放的. 释放 是 调用者要处理的。

CoCreateInstance

用指定的类标识符创建一个Com对象,用指定的类标识符创建一个未初始化的对象。当在本机中只创建一个对象时,可以调用CoCreateInstance;在远程系统中创建一个对象时,可以调用CoCreateInstanceEx;创建多个同一CLSID的对象时, 可以参考 CoGetClassObject 函数。

OleInitialize

它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,将当前的并发模式标识为STA(single-thread apartment——单线程单元),并启用一些特别用于OLE技术的额外功能。除了CoGetMalloc和内存分配函数,应用程序必须在调用COM库函数之前初始化COM库

OleUninitialize

OleInitialize是一个Windows API函数。它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,将当前的并发模式标识为STA(single-thread apartment——单线程单元),并启用一些特别用于OLE技术的额外功能。除了CoGetMalloc和内存分配函数,应用程序必须在调用COM库函数之前初始化COM库。

4.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?

 将文件导入IDA,字符串里面没有发现关于网络的 ==》直接strings看:

strings unpacked.exe

Strings v2.54 - Search for ANSI and Unicode strings in binary images.
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com

!Windows Program
$PE
.linxer
`.rdata
@.data

$s!
u?
C
;Ot
(Q@
KERNEL32.dll
LoadLibraryA
GetProcAddress
H @
Phh @
hX @
L @
8 @
D$$
< @
L$$QVP
R,V
@ @
P @
U
hx @
 SVW
|0@
x0@
0 @
=h0@
, @
t0@
5p0@
EPEPE
$ @
  @
%( @

H @
ole32.dll
OleInitialize
CoCreateInstance
OleUninitialize
8 @
OLEAUT32.dll
MSVCRT.dll
__getmainargs
_controlfp
_except_handler3
__set_app_type
__p__fmode
__p__commode
_exit
_XcptFilter
exit
__p___initenv
_initterm
__setusermatherr
_adjust_fdiv
http://www.malwareanalysisbook.com/ad.html
H @
Ph8
0[X
":Ll
3Bt>O
VQ(8
2]<,M
:R,
P@M^
 3
 S>VW
ey
p1
AQ=h
"Z,
5pg
MNu
02
k '
^J%
I*G9>
{*T
p@l
mal
e%nN
kQc
H @
ole32.vd
Init
FoCr
sc
U!!C
}OLEAUTLA
IMSVCRTT"b
_getmas
yrcs
|P2r3Us
p|vuy
fmod
xF*l
9mV
dj

$s!
u?
C
;Ot
(Q@
KERNEL32.dll
LoadLibraryA
GetProcAddress
MSVCRT.dll
_adjust_fdiv
__setusermatherr
_initterm
__p___initenv
exit
_XcptFilter
_exit
__p__commode
__p__fmode
__set_app_type
_except_handler3
_controlfp
__getmainargs
OLEAUT32.dll
ole32.dll
OleUninitialize
CoCreateInstance
OleInitialize

 

然后对其names窗口进行分析,发现一个跟网址差不多的字符串。

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_初始化_17

 双击跳转过去,发现了网址

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_18

 

 

Lab1-4

目录

Lab1-4

2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。

3.这个文件是什么时候被编译的?

4.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

5.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?

6. 这个文件在资源段中包含一个资源。使用Resource Hacker工具来检查资源,然后抽取资源。从资源中你能发现什么吗?依次分析



 

 

2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。

利用PEiD发现无壳。

3.这个文件是什么时候被编译的?

4.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?

对资源节进行操作:LoadResource、FileResource、SizeofResource

从资源节中加载数据,写一个文件到磁盘上:CreateFile,WriteFile

执行磁盘上的文件:WinExec  ==》这个是从资源文件中释放出恶意PE文件!!!

将文件写到系统目录:GetWindowsDirectory

获得进程的文件描述符,也是为了操作远程的进程:OpenProcess、GetCurrentProcess

可以运行另一个程序:WinExec

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_初始化_19

 可以通过令牌的方式确保只运行一个进程在系统中:AdjustTokenPrivileges  ==>提权相关!

可以去查找用户的登录信息等系统敏感信息:LookupPrigilegeValueA

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_20

 

resourcehacker看到的,然后我们导出为exe:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_初始化_21

 

 

再用PEID打开导出的exe:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_加壳_22

 

 

看看加载的api都有哪些:

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_安全分析_23

 

 

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_24

 

 

strings BIN101.exe

Strings v2.54 - Search for ANSI and Unicode strings in binary images.
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com

!This program cannot be run in DOS mode.
lftlb~lh}l
l|l
mll
|lz}l
Rich
.text
`.rdata
@.data




@
h$0@
Rh<0@
jj
QhD0@
j
%L @
hX @
 SVW
@ @
< @
8 @
4 @
=x0@
0 @
EPEPE
( @
$ @
  @
%, @

%D @
GetWindowsDirectoryA
WinExec
GetTempPathA
KERNEL32.dll
URLDownloadToFileA
urlmon.dll
_snprintf
MSVCRT.dll
_exit
_XcptFilter
exit
__p___initenv
__getmainargs
_initterm
__setusermatherr
_adjust_fdiv
__p__commode
__p__fmode
__set_app_type
_except_handler3
_controlfp
\winup.exe
%s%s
\system32\wupdmgrd.exe
%s%s
http://www.practicalmalwareanalysis.com/updater.exe

 

5.有哪些基于主机或基于网络的迹象,可以被用来确定被这个恶意代码所感染的机器?

利用ida来查看

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_加壳_25

\\system32\\wupdmgr.exe\\winup.exe的程序

psapi.dllsfc_os.dll的动态链接库

 好的,我无法判断了。

6. 这个文件在资源段中包含一个资源。使用Resource Hacker工具来检查资源,然后抽取资源。从资源中你能发现什么吗? 依次分析

将文件导入进Resource Hacker中

 

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_ico_26

 然后将资源保存成二进制文件进行保存,保存成exe文件

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_加壳_27

 导入进ida再进行分析

如何查看加壳的恶意软件 Lab1-2   Lab1-3 恶意代码分析_安全分析_28

 出现了一个网站www.practicalmalwareanalysis.com

 

标签:__,exe,函数,恶意代码,恶意软件,dll,加壳,Lab1,导入
From: https://blog.51cto.com/u_11908275/6941788

相关文章

  • Xv6 Lab10: file system
    Largefiles这个作业需要我们将xv6的最大文件大小从12+256Bytes修改为11+256+256*256Bytes。为了达成这个目标,我们需要使用二级索引块,对inode的addrs字段,首先将NDIRECT从$12$修改为$11$,即前$11$个block是directblock,addrs[NDIRECT]对应的块是一......
  • 恶意代码分析实战 lab 20-1 20-2 20-3 C++恶意代码分析,难度提升
    本次实验我们将会分析lab20-1,lab20-2文件。先来看看要求解答的问题Lab20-1需要回答的问题如下Q1.在0x401040处的函数采用了什么参数?Q2.哪个URL被用来调用URLDownloadToFile?Q3.这个程序做了什么事情?在实验任务一当中我们来分析lab20-1首先载入IDA第一个call是在401008,是一个......
  • 通过组件调用模型实现功能的恶意代码
    一.待解决问题这个恶意代码执行了什么功能?通过什么方式实现其功能?如何实现长久驻留?有什么关键特征,或者说这一类恶意代码有什么关键特征?如何清除该恶意代码造成的影响?二.分析流程这个恶意代码是通过调用组件模型实现其功能,但是在开始的时候走错了方向,花了一个下午的时间......
  • 通过替换dll实现后门功能的恶意代码
    通过替换Kernel32.dll来实现的后门功能的恶意代码。该恶意代码存在一个exe可执行文件和一个dll动态链接库,需要分别进行分析一.待解决问题这个恶意代码执行了什么功能?通过什么方式实现其功能?如何实现长久驻留?有什么关键特征,或者说这一类恶意代码有什么关键特征?如何清除该恶......
  • 恶意代码上机排查思路与方法
    阅览目录1、排查标准应急响应保留现场经验2、特征排查-自写上机排查工具3、进程排查1)数字签名排查2)联网进程排查3)进程注入技术排查4)进程替换技术排查4、文件排查1)进程文件排查2)驱动排查5、启动信息排查6、内存排查1)异地操作2)本地操作3)排查内存模块恶意代码 回到顶部1、排查标准记......
  • SecureBootEncodeUEFI 是一个操作系统启动过程中的安全功能,用于验证操作系统和驱动程
    SecureBootEncodeUEFI是一个操作系统启动过程中的安全功能,用于验证操作系统和驱动程序的签名,确保它们是由受信任的发行商发布并没有遭到篡改。这种技术可以防止恶意软件在系统启动时运行,并提供额外的安全层。SecureBootEncodeUEFI通常在计算机的UEFI(统一扩展固件接口)固件中实......
  • SecureKernel 的主要目标是防止恶意软件或攻击者能够利用漏洞或恶意代码来入侵和篡改
    SecureKernel是一个操作系统内核的安全性功能,用于提供额外的保护层来抵御针对内核的攻击。它是为了增强操作系统的安全性而设计的。SecureKernel的主要目标是防止恶意软件或攻击者能够利用漏洞或恶意代码来入侵和篡改操作系统内核。通过实施一系列安全策略和措施,SecureKernel......
  • 一些带dga域名的恶意软件
    04/02/201906:17下午6,488,759f4f242a50ba9efa1593beba6208a2508_PWS.win32.Simda_1250_DGADNS.pcapSimda僵尸网络恶意软件Simda是一种“安装付费”恶意软件,主要用来传播非法软件和其他类型的恶意软件,包括能够窃取用户金融数据的恶意软件。04/02/201906:15下午1,137,97......
  • 【cs50 2022】lab1 && problem set1
    |lab1|#include<cs50.h>#include<stdio.h>intmain(void){//TODO:Promptforstartsizeintstart_size;do{start_size=get_int("Startsize:");}while(start_size<9);//TODO:Promptforend......
  • 郭盛华:警惕黑客通过 GitHub 存储库传播恶意软件
    据观察,至少有一半来自与欺诈性网络安全公司相关的假研究人员的GitHub账户在代码托管服务上推送恶意存储库。国际知名白帽黑客、东方联盟创始人郭盛华表示,“所有7个存储库在撰写本文时仍然可用,它们声称是针对Discord、GoogleChrome和MicrosoftExchangeServer中所谓的零日......