免杀技术之白加黑的攻击防御

一、介绍

1. 什么是白加黑

通俗的讲白加黑中的白就是指被杀软列入到可信任列表中的文件。比如说微软自带的系统文件或者一些有有效证书签名的文件,什么是微软文件,或者什么是有效签名文件在后面我们会提到他的辨别方法。黑就是指我们自己的文件,没有有效证书签名,也不是微软文件。通常这种文件会被杀软加入到可疑名单中。

2. 白加黑的作用是什么

在很多的杀软中会对白文件的操作进行放行,如果我们将黑程序和白程序在一个进程中是否就可以绕过一些杀软的检测。

二、如何挖掘利用白文件

1. 思考->解决

问:如果我们想要将我们的黑程序载入到白文件中有什么办法?

答:通常情况下我们可以利用注入去将一个程序执行到另外的程序中。

问:在程序执行的开始,如何加载一个DLL。

答:程序加载的时候会优先加载当前文件夹下的文件下的DLL,当然这些DLL要存在于可执行程序的导入表中。

2. 挖掘白文件

首先我们先去找几个有签名的文件或者微软的可执行文件。

下图就是签名的鉴别方式。必须是正常数字签名才行。

图片

图片

这里有一些我们常用的软件也可以利用,我们尽量去看看目录里面体积小的文件,这样方便我们在攻击的时候投入。

图片

这里我们在steam中找到一个uninstall.exe的exe,用ProcessMonitor可以监控到他执行的时候加载了一个“C:\Windows\System32\wow64log.dll” ,那么我们是否可以写一个这个dll放到和他在相同的目录下让他加载我们的wow64log.dll不去加载System32下的wow64log.dll呢?

那么我们去尝试下

3. 如何构造wow64log.dll

首先我们要知道一个exe加载这个dll后他调用了哪些函数,我们要去伪造这些函数,不然他肯定是加载不起来的。有很多方式可以查看比如说LordPe,或者说VS带有的dumpbin。这里我们用dumpbin来看下白程序的导入表,看看wow64log.dll用到了哪些函数。

C:\Users\Administrator\Desktop\1>dumpbin /imports uninstall.exe
Microsoft (R) COFF/PE Dumper Version 14.36.32535.0
Copyright (C) Microsoft Corporation. All rights reserved.Dump of file uninstall.exeFile Type: EXECUTABLE IMAGESection contains the following imports:KERNEL32.dll408070 Import Address Table408614 Import Name Table0 time date stamp0 Index of first forwarder reference30B SetCurrentDirectoryW161 GetFileAttributesW16A GetFullPathNameW356 Sleep1DF GetTickCount56 CreateFileW163 GetFileSize271 MoveFileW31A SetFileAttributesW17E GetModuleFileNameW46 CopyFileWB9 ExitProcess314 SetEnvironmentVariableW1F4 GetWindowsDirectoryW1D6 GetTempPathW111 GetCommandLineW1E8 GetVersion315 SetErrorMode390 WaitForSingleObject142 GetCurrentProcess39 CompareFileTime20A GlobalUnlock203 GlobalLock6F CreateThread171 GetLastError4E CreateDirectoryW69 CreateProcessW2C5 RemoveDirectoryW3C3 lstrcmpiA1D4 GetTempFileNameW3A4 WriteFile3C6 lstrcpyA3C7 lstrcpyW270 MoveFileExW3BE lstrcatW1C2 GetSystemDirectoryW1A0 GetProcAddress17F GetModuleHandleA1FF GlobalFree1F8 GlobalAlloc1B6 GetShortPathNameW2DC SearchPathW3C4 lstrcmpiW31F SetFileTime34 CloseHandleBD ExpandEnvironmentStringsW3C1 lstrcmpW150 GetDiskFreeSpaceW3CD lstrlenW3CA lstrcpynW15A GetExitCodeProcessD5 FindFirstFileWDD FindNextFileW84 DeleteFileW31B SetFilePointer2B5 ReadFileCE FindClose274 MulDiv275 MultiByteToWideChar3CC lstrlenA394 WideCharToMultiByte19D GetPrivateProfileStringW3AA WritePrivateProfileStringWF8 FreeLibrary254 LoadLibraryExW182 GetModuleHandleWUSER32.dll408198 Import Address Table40873C Import Name Table0 time date stamp0 Index of first forwarder reference15C GetSystemMenu248 SetClassLongW1AE IsWindowEnabledC2 EnableMenuItem283 SetWindowPos15A GetSysColor16F GetWindowLongW24D SetCursor1BD LoadCursorW38 CheckDlgButton13C GetMessagePos1B9 LoadBitmapW1C CallWindowProcW1B1 IsWindowVisible42 CloseClipboard24A SetClipboardDataC1 EmptyClipboard1F6 OpenClipboard2D8 wsprintfW231 ScreenToClient174 GetWindowRect15D GetSystemMetrics254 SetDlgItemTextW114 GetDlgItemTextW1E3 MessageBoxIndirectW2F CharPrevW2A CharNextA2D7 wsprintfAA2 DispatchMessageW201 PeekMessageW10C GetDC22A ReleaseDCC4 EnableWindow193 InvalidateRect240 SendMessageW8F DefWindowProcWD BeginPaintFF GetClientRectE2 FillRectC6 EndDialog219 RegisterClassW29A SystemParametersInfoW61 CreateWindowExWF9 GetClassInfoW9F DialogBoxParamW2C CharNextWE1 ExitWindowsEx99 DestroyWindow1C1 LoadImageW27A SetTimer287 SetWindowTextW204 PostQuitMessage292 ShowWindow111 GetDlgItem1AD IsWindow281 SetWindowLongWE5 FindWindowExW2A4 TrackPopupMenu9 AppendMenuW5E CreatePopupMenuBF DrawTextWC8 EndPaint56 CreateDialogParamW23F SendMessageTimeoutW257 SetForegroundWindowGDI32.dll40804C Import Address Table4085F0 Import Name Table0 time date stamp0 Index of first forwarder reference20E SelectObject216 SetBkMode3D CreateFontIndirectW23C SetTextColor8F DeleteObject16B GetDeviceCaps29 CreateBrushIndirect215 SetBkColorSHELL32.dll40817C Import Address Table408720 Import Name Table0 time date stamp0 Index of first forwarder referenceC3 SHGetSpecialFolderLocationBD SHGetPathFromIDListW7A SHBrowseForFolderWAD SHGetFileInfoW10B ShellExecuteW9B SHFileOperationWADVAPI32.dll408000 Import Address Table4085A4 Import Name Table0 time date stamp0 Index of first forwarder reference1D7 RegDeleteKeyW22F SetFileSecurityW1AC OpenProcessToken150 LookupPrivilegeValueW1C AdjustTokenPrivileges1ED RegOpenKeyExW1E2 RegEnumValueW1D9 RegDeleteValueW1CB RegCloseKey1D2 RegCreateKeyExW205 RegSetValueExW1F8 RegQueryValueExW1E0 RegEnumKeyWCOMCTL32.dll408038 Import Address Table4085DC Import Name Table0 time date stamp0 Index of first forwarder reference34 ImageList_AddMaskedOrdinal 1738 ImageList_Destroy37 ImageList_Createole32.dll4082A0 Import Address Table408844 Import Name Table0 time date stamp0 Index of first forwarder reference105 OleUninitializeEE OleInitialize65 CoTaskMemFree10 CoCreateInstanceSummary21000 .data36000 .ndata2000 .rdata13000 .rsrc7000 .textC:\Users\Administrator\Desktop\1>

可以发现这里面并没有wow64log.dll这个导入dll,那么他有可能是动态加载的,也有可能是默认加载的。这样我们就不需要考虑这个dll的导出函数了,直接伪造一个dll即可。

首先我们要知道这个可执行程序32位还是64位,我们可以用DIE或者x64dbg去查看。

图片

这里看得出来是PE32,那么我们要构造的dll也就是32位的dll。

图片

我们在进程附加的时候去弹出一个信息框

图片

这里我们选择和程序对应的架构。X86编译出来就是PE32。

图片

编译好之后我们和可执行文件放到同目录下去执行文件即可。

图片

很遗憾我们并没有去加载成功我们的dll,此时就说明此文件不是我们可以利用的程序,我们需要去更换程序。我们需要继续去以上步骤去重新找白程序文件。

图片

这里我们找到一个企业微信里面的exe我们再去尝试一下。

图片

可以看出我们先加载了dbghelp.dll我们将我们之前的文件名字改成这个名字看看是否可以运行。

图片

此时看到这个图,不要认为我们又要换白程序了,报错是成功的一大步,到这里就说明我们已经成功百分之90了,这里的问题是我们dll虽然有了但是程序加载我们的dll后调用的函数我们并没有提供,好的我们用dumpbin来看下。

C:\Users\Administrator\Desktop\1>dumpbin /imports minidump.exe
Microsoft (R) COFF/PE Dumper Version 14.36.32535.0
Copyright (C) Microsoft Corporation. All rights reserved.Dump of file minidump.exeFile Type: EXECUTABLE IMAGESection contains the following imports:dbghelp.dll403108 Import Address Table403A6C Import Name Table0 time date stamp0 Index of first forwarder reference1D MiniDumpWriteDump

这里可以看到我们的dll需要一个MiniDumpWriteDump这个函数,我们在代码中添加一下。

图片

我们编译再去执行下。

图片

这里我们就可以弹出我们的信息框了。

三、如何检测是否为白加黑程序

1. 杀软检测

图片

杀软很容易检测的这些简单的白加黑文件,因为我们找的黑dll是系统自带的文件,杀软只需对比Hash就可过了出是不可信文件,一般情况下也不会有程序去伪造系统的dll文件。(这里也好解决我们只需要找一些加载不是系统文件的白程序即可。)

2. 手动检测

手动检测的方式也很简单,我们只需要多注意这种exe只带有一个dll的文件,因为如果是木马的话他一般不会有很多文件,我们可以dll右键属性看看是否有签名,如果没有就很可疑,如果有的话看看签名是否有效,这里也可以用代码去代替这个过程。

图片

以上两种都可以怀疑此程序是可疑程序。

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

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

相关文章

【MCU】栈溢出问题

项目场景: 硬件:STM32F407,操作系统:rt_thread master分支 问题描述 问题栈溢出 id 499 ide 00 rtr 00 len 8 9 Function[rt_completion_wait] shall not be used in ISR (0) assertion failed at function:rt_completion_wait,…

屏幕状态自动检测+鼠标自动操作

目录 一、写在前面 1.1适用场景 1.2涉及到的库 二、函数库 2.1pyautogui-屏幕截图&鼠标操作 2.1.1屏幕截图screenshot函数 2.1.2鼠标移动及单击 2.2Opencv-模板匹配 2.2.1matchTemplate函数 2.2.2minMaxLoc函数 2.2.3相关代码 2.3base64-图片转base64 2.3.1在线…

Spring MVC和Spring Boot

上节已经提到过请求,这次梳理响应。 响应 响应基本上都要被Controller所托管,告诉Spring帮我们管理这个代码,我们在后面需要访问时,才可以进行访问,否则将会报错。并且其是由RestController分离出来的,Re…

java使用trim方法和replaceAll方法去除空格之后,还存在空格

今天使用其他人的一个功能,发现生成的映射少了一个,后面去代码里面debug发现是字符串中左边空格没有去除导致。查看代码,里面是使用了字符串.trim().replaceAll(" ", "")去除空格的。这个代码虽然能去除(半角…

[Java EE] 多线程(四):线程安全问题(下)

1.5 volatile关键字 我们在了解这个关键字之前,我们首先要把产生线程安全的第4个原因补齐,我们来说说由于内存可见性引起的线程安全问题. 我们来看下面这样一段代码: import java.util.Scanner;public class Demo16 {public static int count 0;public static void main(Str…

深度学习算法简介(一)

目录 ⛳️推荐 前言 1、深度神经网络(DNN) 2、卷积神经网络(CNN) 3、残差网络(ResNet) 4、LSTM(长短时记忆网络) 5、Word2Vec 6、Transformer 7、生成对抗网络(…

kmeans实现图像像素分类

代码 import tkinter as tkfrom tkinter import filedialogfrom PIL import Image, ImageTkimport numpy as np import random import mathclass Cluster(object):def __init__(self):# pixels是像素的意思,这里定义一个像素组用来存放像素的值self.pixels []# 创…

HubSpot功能有哪些?

HubSpot是一个功能丰富的平台,主要涵盖市场营销、销售、客户服务和客户关系管理(CRM)等领域。以下是HubSpot的一些主要功能: 市场营销自动化:HubSpot允许用户制定和执行多渠道的市场营销活动,包括创建和管…

力扣HOT100 - 105. 从前序与中序遍历序列构造二叉树

解题思路&#xff1a; 分治 以中序遍历为参照&#xff0c;用前序遍历的节点构建二叉树。 root 1 index - left表示前序遍历右子树的开始节点&#xff0c;即当前节点的下一个节点左子树长度。 class Solution {int[] preorder;HashMap<Integer, Integer> map new Ha…

C#基础:WPF中常见控件的布局基础

一、用ViewBox实现放缩控件不变 二、布局代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"Title"MainWindow"…

小瓶清洗桶抗酸碱耐高温PFA清洗器半导体实验清洗用

PFA清洗桶&#xff0c;也叫PFA清洗器、PFA小瓶清洗桶&#xff0c;主要用于清洗浸泡实验室小型PFA溶样罐和烧杯等&#xff0c;带有密封螺纹盖&#xff0c;可以用于摇晃&#xff0c;高纯耐高温材质可放置电热板上加热使用。 特点&#xff1a;可拆卸倒酸口&#xff0c;可安全倒出酸…

ctfshow菜狗杯 web 无算力以及easyPytHon_P

web签到题 error_reporting(0); highlight_file(__FILE__);eval($_REQUEST[$_GET[$_POST[$_COOKIE[CTFshow-QQ群:]]]][6][0][7][5][8][0][9][4][4]);套娃传参 中文要编码 Cookies &#xff1a;CTFshow-QQ%E7%BE%A4:a POST:ab GET:?bc&c[6][0][7][5][8][0][9][4][4]syste…

干货收藏:CRM系统帮助中心设计教程

CRM系统&#xff0c;也就是客户关系管理系统&#xff0c;是企业运营中的得力助手&#xff0c;但太复杂的CRM系统有时候用起来也挺让人头疼的。所以&#xff0c;一个好用、易懂的帮助中心就显得尤为重要啦&#xff01;今天我来跟大家分享一下关于CRM系统帮助中心的设计教程。 1.…

09 MySQL--操作真题

1. not in 用一条 SQL 语句&#xff0c;查询出每门课程都大于 80 分的人。 分析&#xff1a; 去重查询出存在课程小于 80 分的人&#xff0c;设为集合A查询不在集合 A 中的人 # 第一步&#xff1a;找小于等于80分的学员姓名 select distinct name from t_student where fens…

Transformer - 特征预处理

Transformer - 特征预处理 flyfish 原始数据 train_data.values [[ 5.827 2.009 1.599 0.462 4.203 1.34 30.531][ 5.76 2.076 1.492 0.426 4.264 1.401 30.46 ][ 5.76 1.942 1.492 0.391 4.234 1.31 30.038][ 5.76 1.942 1.492 0.426 4.234 1.31…

Linux命令超详细介绍

目录 安装 Linux的目录结构&#xff1a; Linux命令入门&#xff1a; Linux命令的基础格式&#xff1a; 例子&#xff1a; ls 参数 选项 注意&#xff1a; 目录切换命令&#xff1a;cd/pwd cd: pwd: 相对路径和绝对路径&#xff1a; mkdir 不用参数&#xff1a; …

【Node.js工程师养成计划】之打造自己的脚手架工具

一、创建全局的自定义命令 1、打开一个空文件夹&#xff0c;新建一个bin文件夹&#xff0c;在bin文件夹下新建cli.js文件&#xff0c;js文件可以命名为cli.js&#xff08;您随意&#xff09; 2、在cli.js文件中的开头&#xff08;&#xff01;&#xff01;&#xff09;写下面这…

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections(野外的 NERF: 用于无约束照片采集的神经辐射场&#xff09; Abstract 我们提出了一种基于学习的方法来合成新的视图的复杂场景使用只有非结构化的收集野生照片。我们建立在神经辐射场(neRF)的…

对于地理空间数据,PostGIS扩展如何在PostgreSQL中存储和查询地理信息?

文章目录 一、PostGIS扩展简介二、PostGIS存储地理空间数据1. 创建空间数据表2. 插入空间数据 三、PostGIS查询地理空间数据1. 查询指定范围内的地理空间数据2. 计算地理空间数据之间的距离3. 对地理空间数据进行缓冲区分析 四、总结 地理空间数据是指描述地球表面物体位置、形…

11、【桥接模式】让将抽象和实现分离,使得它们可以独立地变化

你好&#xff0c;我是程序员雪球。 今天我们来聊聊 23 种设计模式中&#xff0c;一种常见的结构型模式&#xff0c;桥接模式。聊聊它的设计思想、应用场景&#xff0c;以及如何使用。 一、设计思想 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#…