justnews 5.2.3破解版后门
52pojie链接 https://www.52pojie.cn/thread-1084019-1-1.html
没有搜到样本,后门流程如下:
- functions.php 添加了一个后门的动作,增加了一个访问密钥为go,backdoor/123456的账户
- 后面一个panel.php多层base64编码了网站、作者等信息。
这个作者的另一篇文章 https://www.52pojie.cn/thread-1074873-1-1.html
有样本,查看
1 | add_action('wp_head', 'wp_backdoor'); |
和这个一样的逻辑啊。。
混淆加密帖子 https://www.52pojie.cn/thread-1074918-1-1.html
PHP Debug+vscode+xDebug+php7.2+PHP 智能补全,单步调试到eval就可以看到主逻辑
php解密资料(zym加密)https://www.52pojie.cn/thread-693641-1-1.html
伪装成docx的病毒分析
https://www.52pojie.cn/thread-1412858-1-1.html
没有给样本
可以使用Detous Hook反调试函数(新知识)
彩虹猫(MEMZ)病毒分析
https://www.52pojie.cn/thread-1096117-1-1.html
解压后有个bat文件,然后使用批处理+ActiveX命令
流程:
- 使用base64串建立x文件
- 建立x.js,用于base64解码x到z.zip
- 解码x之后再解压memz文件到%appdata%\MEMZ.exe
- 删除x,x.js,z.zip
- 执行MEMZ.exe
过程中所有的输出均被重定向到NUL
前面输入了一大堆base64,输出后是个magic number为PK的文件,结合bat文件命令,这应该是一个zip压缩包
解压之后就是那个memz.exe了(只有15kb的病毒,很有前途啊)
exeinfope扫描,32位,无壳
getSystemMetics https://baike.baidu.com/item/GetSystemMetrics/5608817 获取屏幕分辨率,分别是x,y
病毒第一次运行,会创建10个自己,参数是/watchdog,然后以main参数运行,并退出程序
/watchdog参数下会最终拒绝关机,不断地衍生出更多进程,每次会等待10秒。如果进程减少了,获取关机权限
获取关机权限函数
1 | BOOL __usercall sub_401021@<eax>(int a1@<ebp>) |
监测数量部分
1 | while ( 1 ) |
向PhysicalDrive0写入几个奇怪的字节,0x7A0大小。看大佬分析是改变了扇区启动项。
然后创建线程,函数列表位于405130,共10个函数
- 打开随机网址
1
2
3
4
5
6
7
8
9
10
11
12
13int __cdecl sub_4014FC(int a1)
{
unsigned int v1; // eax
int v2; // eax
v1 = sub_401A55();
ShellExecuteA(0, "open", (&lpFile)[v1 % 0x2E], 0, 0, 10);
v2 = sub_401A55();
return sub_401B09(
COERCE_UNSIGNED_INT64((double)a1),
HIDWORD(COERCE_UNSIGNED_INT64((double)a1)),
(double)(v2 % 200) + 1500.0 / ((double)a1 / 15.0 + 1.0) + 100.0);
} - 随机设置鼠标位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23int __cdecl sub_40156D(int a1, int a2)
{
int v2; // esi
int v3; // edi
int v4; // ecx
int v5; // esi
int v6; // ecx
int v7; // eax
int v8; // ecx
int v9; // eax
int v11; // [esp-4h] [ebp-18h]
struct tagPOINT Point; // [esp+Ch] [ebp-8h] BYREF
GetCursorPos(&Point);
v2 = a2 / 2200 + 2;
v3 = sub_401A55(2200) % v2;
v5 = sub_401A55(v4) % v2;
v7 = sub_401A55(v6);
v11 = Point.y + v3 * (v7 % 3 - 1);
v9 = sub_401A55(v8);
SetCursorPos(Point.x + v5 * (v9 % 3 - 1), v11);
return 2;
} - 通过sendInput发送随机ASCII码消息
- 播放SystemHand声音
- 随便画一些东西
- 弹出Still using this computer? lol
- 随机画图标
- 穷举桌面上的窗口,并发送超时消息。这样会导致系统崩溃
- 复制一个矩形
- 还是随机画矩形
leetcode每日一题 27. 移除元素
思路:先从后向前扫描相等的,直到数组空或遇到不相等的为止。然后从前向后扫描,直到遇到last为止。如果从前向后遇到要去除的数,则让last指向的数替换这个数,last前移,直到遇到下一个不相等的数为止
1 | int removeElement(int* nums, int numsSize, int val){ |