基于认证的入侵(一) |
[ 2007-7-5 18:38:00 | By: emile ]
|
一、IPC$入侵:
IPC$本来主要是用来远程管理计算机的,但实际上往往被入侵者用来与远程主机实现通信和控制。入侵者能够利用它做到: 建立、拷贝、删除远程计算机文件 在远程计算机上执行命令
(一)远程文件操作
1、IPC相关知识: IPC即 Internet Process Connection的缩写,可理解为“命名管道” 资源,用来在两台计算机进程之间建立通信连接,而IPC后面的$是Windows系统所使用的隐藏符号,因此“IPC$”表示隐藏的IPC共享。IPC$ 是Windows NT/2000/XP/2003的一项特有功能,通过它,一些网络程序的数据交换可以建立在它上面,实现远程访问管理计算机。IPC连接就好像是挖好的地道,通信程序就通过这个地道访问目标主机。默认情况下IPC是共享的,通过它,入侵者能实现远程控制目标主机。 上述Windows系统在安装完成后,自动设置共享的目录为:C盘、D盘、E盘、ADMIN目录(C:/WINNT/)等,即为C$、D$、E$、 ADMIN$等。但这些共享是隐藏的,只有管理员能对他们进行远程操作,在MS-DOS中键入“ net share”命令可以来查看本机共享资源。如图:
几个常用的Dos命令:
net user:系统帐号类操作; net localgroup:系统组操作; net use:远程连接、映射操作; net send:信使命令; net time:查看远程主机系统时间 netstat -n:查看本机网络连接状态; nbtstat -a IP:查看指定IP主机的NetBIOS信息
2、实例:下面通过一个实例介绍如何建立和断开IPC$连接,以及入侵者如何将远程磁盘映射到本地的。通过IPC$连接进行入侵的条件是已获得目标主机管理员帐号和密码。具体步骤如下:
(1)打开cmd命令行窗口; (2)建立IPC$连接: 使用命令:net use file://IP/IPC$ "PASSWD" /USER: "ADMIN"与目标主机建立IPC$连接。 参数说明:IP-目标主机的IP;IPC$-指明是IPC$连接;PASSWD-已经获得的管理员密码;ADMIN-已经获得的管理员帐号。 一个例子: net use file://192.168.1.60/ipc$ "" /user:"administrator" (3)映射网络驱动器: 使用命令:net use Y: file://192.168.1.60/D$ 该命令表示把目标主机192.168.1.60上面的隐藏D盘映射为本机的Y盘,映射成功后,打开“我的电脑”会发现多出一个Y盘,上面写着"192.168.1.60上的D$"。如图:
(4)查找指定文件:
鼠标右键单击Y盘,点击弹出菜单的“搜索”,查找关键字“**”,等待一会儿得到结果,可以将找到的文件拷贝、粘贴等,像对本地磁盘操作一样。 (5)断开连接: 键入“net use * /del”命令断开所有的IPC$连接。键入“net use //目标IP/IPC$ /del”可以删除指定目标IP的IPC$连接。
(二)留后门帐号
1、相关知识: 利用批处理bat文件和计划任务来达到目的。下面是一些相关DOS命令: at:用来建立计划任务; net time:用来查看目标计算机系统时间,以便使用计划任务指定时间; net user:用来管理计算机上的帐号; 查看帐号— net user 建立帐号— net user name passwd /add 删除帐号— net user name passwd /del net localgroup:用来管理工作组,用法同net user。 2、实例:建立后门帐号,步骤如下: (1)编写BAT文件: 打开记事本,输入“net user emile 123456 /add”和“net localgroup administrators emile /add”,然后把文件另存为“hack.bat”,保存在cmd当前默认目录下。 (2)与目标主机建立IPC$连接,以192.168.1.60为例: 打开cmd窗口,分别执行命令: net use file://192.168.1.60/ipc$ "" /user:"administrator" net use z: file://192.168.1.60/C$ (3)拷贝bat文件到目标主机: 在cmd窗口输入copy hack.bat file://192.168.1.60/C$,把文件拷贝到目标位置;也可以打开映射驱动器用图形界面直接进行拷贝操作。 (4)通过计划任务使远程主机执行hack.bat文件: 首先键入“net time file://IP/”查看远程主机的系统时间,再键入“at file://IP/ TIME COMMAND”命令在远程主机上建立计划任务。 参数说明:IP—目标主机IP;TIME—设定计划任务执行的时间;COMMAND—计划任务要执行的命令,如此处为C:/hack.bat。 计划任务添加完毕后,使用命令“net use * /del”断开IPC$连接。 (5)验证帐号是否成功建立: 等待一段时间,当估计远程主机已经执行hack.bat文件后,通过用新帐号建立IPC$连接来验证是否成功建立“emile”帐号,连接成功则说明帐号成功建立。 (三)IPC$空连接漏洞 1、漏洞描述: IPC $本来要求客户机要有足够权限才能连接到目标主机,然而IPC$连接漏洞允许客户端只使用空用户名、空密码就可以与目标主机成功建立连接。入侵者利用该漏洞可以与目标主机进行空连接,但无法执行管理类操作,例如不能执行映射网络驱动器、上传文件、执行脚本等命令。虽然入侵者不能通过该漏洞直接得到管理员权限,但也可用来探测目标主机的一些关键信息,在“信息搜集” 中发挥一定作用。 2、实例:通过IPC$空连接获取信息,步骤如下: (1)建立IPC$空连接,如果空连接建立成功,反映了目标主机的“不坚固”程度。 (2)键入“net time file://IP/”查看目标主机的时间信息,入侵者可以通过目标主机的时间信息一定程度上推断出目标主机所在的国家或地区。 (3)获取目标主机上的用户信息:USERINFO.exe和X-Scan是常用的两款获取用户信息的工具。 a.USERINFO是利用IPC$漏洞来查看目标主机用户信息的工具,通过USERINFO来查看目标主机用户信息的时候,并不需要事先建立IPC$空连接。 命令:USERINFO file://IP/ USER 用来查看目标IP上USER用户信息,然后根据反馈的结果进行具体分析。 b.X-Scan扫描器也是利用目标主机存在的IPC$空连接漏洞,获取用户信息,用法略。
(四)安全解决方案
为阻止入侵者利用IPC$入侵,有如下工作要做: 1、删除默认共享:(删除默认共享后,机器上原来的web服务器仍可正常服务) (1)首先了解本机共享资源,在cmd窗口输入“net share”命令; (2)删除共享资源: 方法一:通过BAT文件执行删除共享资源命令 首先建立BAT文件(如noshare.bat),输入如下内容: net share ipc$ /del net share admin$ /del net share C$ /del net share D$ /del 如果有其他盘符,可以继续添加。然后保存该文件后,拷贝到本机“开始”—〉“程序”—〉“启动”中,以后每次开机都会自动执行该BAT文件来删除默认共享。如果以后需要使用共享资源,使用“net share 共享名”命令来打开。 方法二:通过修改注册表来删除默认共享。 打开注册表,按不同操作系统进行如下不同修改: Windows 2000 server版: Key:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters 新建Name:AutoShareServer Type:DWORD(双字节) Value:0 Windows 2000 station版: Key:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters 新建Name:AutoShareWks Type:DWORD(双字节) Value:0 建立后重起,默认共享即被删除。如需要使用共享资源,删除刚才建立的键,重起即可生效。 2、禁止空连接进行枚举攻击的方法: 有了IPC$空连接作为连接基础,入侵者可以进行反复的试探性连接,直到连接成功、获取密码,这就为入侵者暴力破解提供了可能性,被入侵只是时间问题。为了解决这个问题,打开注册表编辑器,在:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/ LSA中把Restrict Anonymous=DWORD的键值改为:00000001(也可以改为2,不过改为2后可能造成一些服务不能正常工作)。修改完毕重起计算机,这样便禁止了空连接进行枚举攻击。要说明的是,这种方法并不能禁止建立空连接。现在再使用X-Scan对计算机进行安全检测,便会发现该主机不再泄露用户列表和共享列表,操作系统类型也不会被X-Scan识别。 3、关闭Server服务: Server服务是IPC$和默认共享所依赖的服务,如果关闭它,IPC$和默认共享便不存在,但同时也使服务器丧失其他一些服务功能,因此此方法不适合服务器使用,只适合个人计算机使用。 通过“控制面板”—〉“管理工具”—〉“服务”打开服务管理器,在服务列表中找到Server服务,鼠标右击,在弹出菜单中选择“属性”,然后选择“禁用”,重起生效。还可使用Dos命令“net stop server/y来关闭,但只能当前生效一次,计算机重起后Server服务还是会自动开启。
(五)IPC$入侵常见问题
1、与远程主机建立IPC$连接,本地机需要:操作系统是Windows 2000及以上,而不能使用Windows 9x;本地机也应开放IPC$;在获得远程主机管理员帐号和密码的情况下,IPC$才能建立成功,IPC$空连接除外。远程主机需要:开放IPC$共享;运行Server服务。 2、IPC$是基于帐号和密码的,拥有远程主机管理员帐号和密码能成功建立IPC$,而且拥有相应帐号的权限;使用IPC$空连接虽然能与远程主机建立连接,但该连接没有任何权限,也就是说未授权者不能通过IPC$空连接控制远程主机。 3、当与远程主机建立IPC$成功,但拷贝文件失败。如果是用管理员帐号与远程主机建立的连接而不是IPC$空连接,则拷贝失败说明远程主机关闭了C盘、D盘等默认共享资源,这时候可以用计划任务开启这些共享资源,如“at file://192.168.1.60/ 15:30 net share Cpan=C:/”。 4、一些常见系统错误: 错误号5—权限不足;错误号51—windows无法找到网络路径,网络有问题;错误号53—找不到网络路径,IP地址错误,目标没开机,目标server 服务未启动,目标有防火墙(端口过滤)或没有IPC$;错误号67,找不到网络名,你的workstation服务未启动,目标删除了IPC$;错误号 1219—提供的凭据与已存在的凭据集冲突,你已经和对方建立了一个IPC$,请删除再连;错误号1326—未知的用户名或错误密码;错误号1792—试图登录,但网络登陆服务没启动,目标NetLogon服务未启动;错误号2242—此用户的密码已过期,目标有帐号策略,强制定期要求更改密码。
二、远程管理计算机:
必须是Administrator组的成员才能完全使用“计算机管理”,否则没有查看或修改管理属性的权限,并且没有执行管理任务的权限。 1、远程管理: (1)相关知识: Telnet用于提供远程登录服务,当终端用户登录到提供这种服务的主机时,就会得到一个Shell(命令行),通过这个Shell终端用户可以执行远程主机上的任何程序;同时用户将作为这台主机的终端来使用该主机的CPU和内存资源,实现完全控制远程主机,Telnet登录控制是入侵者常用的方式。 Telnet命令:telnet IP [Port] —默认端口为23
(2)实例:开启远程计算机“计划任务”和“Telnet”服务
步骤一:建立IPC$连接,还是以192.168.1.60为例,过程略 步骤二:管理远程计算机: 打开“计算机管理”,在界面中通过“操作(A)”—〉“连接到另一台计算机(c)”,在弹出的“选择计算机”窗口中“名称”栏中填入目标主机IP “192.168.1.60”,然后点击“确定”显示界面如图: 上述过程中如果出现“输入用户名和密码”,就需再次输入用户名和密码,该用户名和密码可以与建立IPC$连接时候使用的相同,也可以不同,这都不会影响以后操作,但这个用户一定要拥有管理员权限。 步骤三:开启“计划任务”服务: 在“计算机管理”窗口中,鼠标单击“服务和应用程序”前面的+来展开项目,然后在展开的项目中选择“服务”,右侧出现的列表即是远程计算机的服务列表,在“名称”中找到“Task Scheduler”,双击它打开设置对话框。在“Task Scheduler的属性”窗口中,把“启动类型”选择为“自动”,然后在“服务状态”中单击“启动”来启动Task Scheduler服务,这样设置后,该服务会在每次开机时自动启动。 步骤四:开启“Telnet”服务: 在服务列表中找到“Telnet”,双击打开Telnet服务的属性窗口,按照前面一样的方法把该服务启动类型设置为“自动”,将服务状态设置为“已启动”。 步骤五:断开连接: 关闭“计算机管理”后,还需要手工键入命令“net use * /del”来断开IPC$连接。
2、查看信息:
(1) 日志:“系统工具”下的“事件查看器”用来查看关于“应用程序”、“安全性”、“系统”这三个方面的日志。应用程序日志包含由应用程序或系统程序记录的事件,例如,数据库程序可在应用程序日志中记录文件错误,而程序员决定记录哪一个事件。系统日志包含windows的系统组件记录的事件,例如,在启动过程将加载的驱动程序或其他系统组件的失败记录在系统日志中。安全性日志可以记录安全事件,如有效的和无效的登录尝试,以及与创建、打开或删除文件等资源使用相关联的事件,管理器可以指定在安全日志中记录什么事件,例如,如果已启用登录审核,登陆系统的尝试将记录在安全日志里。
(2) 共享信息及共享会话:通过“计算机管理”可以查看该机的共享信息和共享会话(IPC$也属于这种会话)。在“共享”中可以查看该机开放的共享资源,除了查看共享资源外,还可通过此处来建立共享;管理员也可以通过“会话”来查看计算机是否与远程主机存在IPC$连接,借此获取入侵者的IP地址(就在“系统工具”—〉“共享文件夹”—〉“会话”下查看)。
(3)用户和组:可以通过“计算机管理”查看远程主机用户和组的信息,不过不能在这里执行“新建用户”和“删除用户”操作。
3、开启远程主机服务的其他办法:
(1)通过“BAT文件”和“计划任务服务”开启远程主机服务: 步骤一:编写BAT文件,内容为“net start telnet”,另存为tel.bat; 步骤二:建立IPC$连接,把tel.bat文件拷贝到远程主机; 步骤三:使用“net time 目标IP”查看远程主机系统时间,然后用“at //目标IP 计划time 命令”建立计划任务。 注意的是,如果远程主机禁用了telnet服务,这种方法将失败。
(2)使用工具netsvc.exe开启远程主机服务:
netsvc是微软公司NT系统中附带的一个管理工具,用于开启远程主机上的服务,这种方法不需要通过远程主机的“计划任务服务”。 命令格式:netsvc file://IP/ SVC /START 其中:IP为目标主机IP,SVC为预开启的服务名,/start表示开启服务 一个例子:netsvc file://192.168.1.60/ telnet /start 开启远程主机的telnet服务
4、常见问题:
(1)使用“计算机管理”与远程主机连接失败的原因:没有获取远程主机的管理员帐号和密码;目标主机禁用了server服务;错误的IP地址;目标主机不是WinNT/2000/XP/2003操作系统。 (2)有时候使用“计算机管理”与远程主机建立连接,但无法查看该主机上的“本地用户和组”,这是正常的,可以采用其他方法查看,这里不祥述。 (3)使用“计算机管理”与远程主机建立连接,开启“Telnet服务”均成功,但无法登录远程主机,这是由于微软为了增加Telnet服务的安全性而添加的一项NTLM验证,正是这个验证导致非授权主机的Telnet登录失败。 |