zl程序教程

您现在的位置是:首页 >  其它

当前栏目

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

如何 分析 查看 恶意软件 恶意代码 加壳
2023-09-14 09:11:45 时间

Lab1-2

分析Lab1.2.exe文件

目录

Lab1-2

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

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

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


 

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

利用PEID进行查看

普通扫描如下:

普通扫描没有发现加壳

 

然后看section,name是upx。

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

 

 

 

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

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

 

下面再使用PE viewer进一步检测:
恶意代码分析_Lab01-02_静态分析_第4张图片
恶意代码分析_Lab01-02_静态分析_第5张图片
恶意代码分析_Lab01-02_静态分析_第6张图片

首先该程序的节部分就非常的可疑,这里显示的是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大,所以可以确定该程序被加壳了.

 

核心扫描如下:

核心扫描发现upx加壳

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

或者进行upx自动脱壳

dos命令

 图形窗口

用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的:

 

 

 

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

 

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

打开链接函数InternetOpenA和InternetOpenUrlA

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

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

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

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

 

 

Lab1-3

 

分析Lab1.3.exe文件

目录

Lab1-3

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

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

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


 

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

利用PEiD进行分析

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

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的自动化脱壳,软件里面有自带的功能,很好,不用进行修复。

 

使用LinxerUnpacker 进行脱壳:

 

 脱壳后看到的:

 

 

注意这个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-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

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

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

 

 

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

 

 

再用PEID打开导出的exe:

 

 

看看加载的api都有哪些:

 

 

 

 

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来查看

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

psapi.dllsfc_os.dll的动态链接库

 好的,我无法判断了。


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

 

将文件导入进Resource Hacker中

 

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

 导入进ida再进行分析

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