判断系统被黑技巧:Windows内部命令

日期: 2008-03-19 作者:Ed Skoudis翻译:周姝嫣 来源:TechTarget中国 英文

我们需要直面Windows计算机会遭受攻击这件事,而且在某些情况下攻击经常发生。幸亏微软公司已经为Windows设置了许多工具,这样,管理员和超级用户就能分析计算机是否受到攻击。本篇使用技巧是两篇系列文章中的第一篇,我将解释五种有用的Windows内置命令行工具,用以分析这种情况。   1)WMIC:一个富于冒险精神的世界   Windows管理规范命令行(WMIC)不仅仅是一个命令,更是一个独立的世界。

WMIC在windows内部为强大的Windows管理规范API提供了命令行界面,能使管理员访问各种关于Windows计算机的详细信息,包括详细的设置和对象属性。WMIC是Windows XP……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

我们需要直面Windows计算机会遭受攻击这件事,而且在某些情况下攻击经常发生。幸亏微软公司已经为Windows设置了许多工具,这样,管理员和超级用户就能分析计算机是否受到攻击。本篇使用技巧是两篇系列文章中的第一篇,我将解释五种有用的Windows内置命令行工具,用以分析这种情况。

  1)WMIC:一个富于冒险精神的世界

  Windows管理规范命令行(WMIC)不仅仅是一个命令,更是一个独立的世界。WMIC在windows内部为强大的Windows管理规范API提供了命令行界面,能使管理员访问各种关于Windows计算机的详细信息,包括详细的设置和对象属性。WMIC是Windows XP Professional, Windows 2003和Windows Vista系统自带的命令。如果要使用WMIC,用户需要运行WMIC命令加以激活,然后选择感兴趣的计算机内容(通常指系统内部的别名)。例如,要了解计算机进程,用户可以运行:
C:> wmic process

  该项命令的输出形式可能不太好看,因为没有明确指定输出格式。凭借WMIC,可以采用多种方法将输出内容格式化,但是分析系统是否受感染有两种最重要的方法:一种是“完整形式”,对于用户感兴趣的每处计算机内容,都能显示详细信息;另一种是“摘要形式”的输出,每个报告条目在实体列表中输出一行,如正在运行的进程、自启动项目以及共享文件。
 
  例如,如果我们要看计算机上正在运行的进程摘要,可以打开:

  C:> wmic process list brief
 
  这个命令会显示名称、进程ID、优先进程以及其它不太重要的属性。要获取更详细的信息,运行:

  C:> wmic process list full
 
  这项命令会显示各种各样的信息,包括进程的执行全路径、命令行调取等。检查计算机是否受感染时,管理员可以查看每项进程,判断它在计算机上的使用是否合法,查清采用搜索引擎的意外进程或未知进程。
 
  除了进程别名,用户还可以更改启动,获取计算机的自启动项目列表,包括随系统启动的项目和用户登录时启动的项目,这些可以通过自启动的注册表键值或文件夹判定:

  C:> wmic startup list full
 
  许多恶意软件会通过到在合法项目中添加自启动项目,而在计算机上自动运行,而那些合法的项目往往属于杀毒工具和系统托盘工具。通过查看计算机的区它设置,用户可以利用WMIC将“startup” 替换为“QFE”( Quick Fix Engineering缩写),看到系统的补丁水平;替换为“share”就可以看到计算机上的Windows共享文件列表,替换为“useraccount”就可以看到用户账户的详细设置。
 
  采用WMIC可以很方便地重复运行信息收集命令,只需在WMIC命令后面加上“every:[N]”。这里[N]为整数,表明WMIC每[N]秒运行一次指定命令。这样,用户就能及时发现系统设置发生了哪些变化,并且能仔细检查输出情况。利用该功能实现每5秒记录一次进程,用户可以运行:

  C:> wmic process list brief /every:5

  按CTRL+C结束循环。
 
  2)net命令:陈旧但有用的命令

  WMIC是一种相对较新的命令,但我们不能抛弃一些以前的命令,它们非常有用。我最喜欢的是“net”命令。管理员可以使用该命令获取各种有用信息。

  例如,“net user”命令能显示计算机中所有的本地用户账户。“net localgroup”命令显示本地组成员,"net localgroup administrators" 命令显示管理员组中的成员,“net start”命令显示正在运行的服务。

  通常,黑客会给系统添加用户,或者将他们自己的账户归入到管理员组中,所以应该检查这些命令的输出,看看攻击者有没有控制计算机账户,这是个不错的想法。同样,一些黑客会在计算机上创建自己的恶意服务,用户应该当心这些服务。
 
  3)Openfiles命令:仔细检查

  许多Windows管理员不熟悉Windows内置的强大的openfiles命令。正如其名,这个命令能够显示计算机上打开的所有文件,以及与文件相关的进程名。近期的Windows版本XP Pro和Vista具有该项功能。就像Linux和Unix中常用的lsof命令一样,openfiles命令能为管理员显示计算机上打开的所有文件,同时给出进程名和每个文件的全路径。然而,openfiles和losf又有所不同,它不提供进程ID编号、用户编号等其它详细信息。

  Openfiles命令能收集大量的信息,因而称其为贪婪的性能也不足为奇。与openfiles相关的账户在默认情况下是关闭的,这就意味着用户只能打开命令后才能获得相关数据。这项功能可以通过运行以下命令加以激活:

  C:> openfiles /local on

  用户需要重启计算机,待系统重新登陆后,才能能运行以下openfiles命令:

  C:> openfiles /query /v

  这项命令的输出内容非常繁琐,包括用户账户打开的文件在后台运行的每个进程。要了解感染了哪些恶意软件,或者黑客对计算机做了什么,用户应该找出那些不正常的文件或意料之外的文件,尤其是计算机上非本地用户相关的文件。

  完成openfiles命令后,运行以下命令关闭账户功能,使系统返回到正常状态:

  C:> openfiles /local off
 
  4)Netstat:显示网络
Windows Netstat命令能够显示网络行为,默认情况下监控TCP和UDP网络。因为恶意软件通常通过网络传播,用户可以运行以下命令,查看输出内容中有哪些连接不太寻常或者不在意料之中:
C:> netstat –nao

  -n项指定netstat在输出中显示的内容——不是计算机名和协议名,而是IP地址、TCP或UDP的端口地址。-a命令指定显示所有连接和监听端口。-o命令指定netstat显示TCP或UDP端口中每个项目的进程ID号。如果你感兴趣的是ICMP,而不是TCP或者UDP, netstat可以运行:

  C:> netstat –s –p icmp

  这就表明,该项命令能够返回到ICMP协议。尽管输出内容不像TCP和UDP那么详细,用户可以看看计算机是否经常在网上发送不必要的ICMP流量。一些后门病毒和恶意软件利用ICMP Echo消息进行传播,每隔一段时间就可以在许多网站上发现熟悉的、看似无害的ping数据包。

  就像WMIC一样,netstat命令也能让我们每N秒实现一次运行。但是,不必采用WIMC的句法——“/every:[N]”,用户可以简单地利用空格和整数激活netstat命令。从而,要想每两秒列举一次正在使用的TCP和UDP端口,用户可以运行:

  C:> netstat –na 2
 
  5)查找:在输出中查找有用之物

  目前为止,我所提到的大多数命令都能在屏幕上输出大量内容,这让人很难从中找出自己感兴趣的具体条目。但是,Windows能够帮助你。用户可以利用Windows内置的find和findstr命令查找某个命令的输出内容。Find命令能搜索简单的字符串,而findstr支持常规的表达式,这种方法比较复杂,但能使查询格式更加具体。由于findstr支持的常规表达式不在本文讨论范围内,我们将注意力集中在find命令上。默认情况下,find区分大小写,利用/i可以使其不区分大小写。

  Find命令还具有计数功能。用/c命令激活后,find就能计算输出行数,其中包括所给字符串在内。用户通常希望计算命令输出的行数,这样就能判断正在运行的进程数、启动项目数或者计算机上其它一些有趣的信息。要计算输出行的数量,其实很简单,用户只要通过find/c /v ""命令就能实现。这个命令可以计算(/c)没有(/v)空行("")的命令行数。实际上,只要计算出非空行行数,这项命令就能算出总行数。

  现在,用户可以凭借find命令查询我之前讨论的其他命令的输出内容,找出感兴趣的信息。例如,想要查看计算机中cmd.exe进程每秒的运行情况,就输入:

  C:> wmic process list brief /every:1 | find "cmd.exe"

  或者,想要看看hive注册表HKLM里的自启动项目,就运行:

  C:> wmic startup list brief | find /i "hklm"

  若要计算计算机中打开的文件数目, 确保openfiles账户激活后,只需运行:

  C:> openfiles /query /v | find /c /v ""

  在用这种方法计算条目时,记得减去列头的行数。最后举个例子,如果想要查看计算机TCP端口2222什么时候启动,以及利用该端口的进程ID,并且要精确到秒,就应该运行:

  C:> netstat –nao 1 | find "2222"
 
  研究输出

  凭借这五项工具,用户可以获得大量配置信息,了解Windows计算机的安全状况。然而,利用任何一项命令判断是否受威胁时,用户都需要将所分析计算机的当前配置与“正常”、“不受感染”的计算机的情作对比。

  主要需要比较三方面的内容。首先,如果用户对恶意软件的捕获经验非常丰富,他/她可能就知道所给计算机中哪些配置正确哪些配置错误,也能根据经验判断哪些配置具有恶意或者不太正常。另外,如果可能的话,需要对比干净、不受感染的计算机。如果没有,用户需要依靠第三种方法——通过上述研究具体文件、进程名、文件名称和端口编号,上网搜索判断所给计算机和所配置的软件是否正常,是否与某类恶意软件相关。

  在本篇使用技巧中,我谈到了五大中强大的Windows内部命令。下篇文章中,我会讨论人们不怎么知道但是非常有用的tasklist、reg和ipconfig命令,通过命令行实现FOR循环和GUI管理,这样10大命令就齐全了。

相关推荐