一、Ping和traceroute
1.ping
Ping命令允许我们检查一个远程系统是否可以访问。它使用ICMP工作。发起ping的系统向目标系统发送一个ICMP Echo Request包。然后,远程系统通过发回一个ICMP Echo Reply来响应这个ping请求。当对我们到对ping请求的成功响应时,就知道这两个系统之间的网络连接是正常的。
Ping在Windows、Mac和Linux操作系统上的作用是一样的,只需要输入ping命令,然后输入想ping的系统的IP地址或域名即可。主要注意点是,并不是互联网上的每个系统都对ping请求作出反应。许多网络在其防火墙上阻止ping,如果我们没有收到ping的响应,可能也是这个原因。
Hping是基本网络ping命令的一个变种。Hping也可以让我们查询一个系统,看它是否存在于网络上。并且,与Ping不同的是,Hping允许我们完全定制扫描中使用的数据包的内容。
2.Traceroute
traceroute命令允许我们追踪网络上两个主机之间的路径。如下,其中的*表示当前跳数没有设备进行回应。
Traceroute命令在Mac和Linux系统上工作,它也可以在Windows上使用,但在Windows操作系统上它的名字略有不同。只要输入TRACERT而不是traceroute即可。Windows还包括另一个叫做pathping的命令,它将ping和traceroute的功能结合在一个命令中。
二、DNS工具
我们已经应该知道,DNS将域名翻译成IP地址。然而,我们可以手动执行DNS查询,找出与域名相关的IP地址。在Mac和Linux系统上,dig命令是执行这些域名查询的主要工具。假设我们想知道certmike.com的IP地址。可以直接输入dig certmike.com。然后我在这里得到一些结果。可以看到中间的,问题和答案部分,certmike.com的IP地址是162.255.119。
Windows没有dig命令,但它有一个叫做nslookup的替代品。Nslookup的工作方式基本上是一样的。nslookup命令在Mac和Linux系统上也能工作,但它在这些系统上被认为是过时的,大多数人喜欢使用dig。所以,在Windows系统上,让我们输入nslookup。Certmike.com。得到的回应如下:
在许多情况下,我们可能有一个域名或IP地址,但没有其他信息。这可能是一个可疑的日志条目的来源,一个在netstat命令中显示的主机,或任何其他我们想了解的IP地址。WHOIS命令可以帮助我们了解更多关于一个域名或IP地址的所有者。有许多网站提供WHOIS查询服务。
我们将使用domaintools.com上的这个网站。继续输入certmike.com来了解这个域名的更多信息。当搜索完成后,可以发现了一些更多的信息。我们可以看到这个域名的注册商是namecheap.com。还有一些其他信息,这个域名是在2016年12月16日创建的。但这里的大部分信息都被掩盖了,因为注册人使用了WhoisGuard保护。
如果在DomainTools的WHOIS查询页面。不再输入一个域名,而是输入一个IP地址,就能看到其对应的域名。
反向WHOIS(Reverse Whois)查询,其允许我们识别与一个IP地址相关的所有域名。而这可能是一个非常有用的侦察工具,帮助我们了解相互关联的域名。我们将在view.dns.info网站上使用反向WHOIS查询。首先,输入一个用于为LinkedIn注册域名的电子邮件地址,例如hostmaster@linkedin.com。然后,点击 "开始"开始查询。可以看到,有1248个域名与这个电子邮件地址有关。
三、Ipconfig, Ifconfig和route
1.Ifconfig
所有的操作系统都包括一个命令行工具,允许我们了解系统的网络接口的一些信息。在Mac和Linux系统中,这就是ifconfig命令,它是接interface configure的简称。例如在MacBook的终端提示符下,输入ifconfig en0,表示查看与en0接口相关的信息,如果仅ifconfig,则表示查看所有的接口信息。en0的信息如下:
这里有很多专业术语,但我看到的一些重要信息是与这台计算机相关的Mac地址,在Ether关键字旁边,这个系统的Mac地址是00:00:aa:aa:55:66。在这下面,我看到这个网络接口的IPv6和IPv4 IP地址,IPv4地址是10.0.0.150。这个命令在Linux系统上以完全相同的方式工作。
2.Ipconfig
Windows系统也有一个类似的命令,但名字有点不同。在Windows系统中,我们可以使用ipconfig命令来显示网络接口信息。如下,可以看到这个系统上配置的以太网适配器的IPv4地址是172.31.26.216。我还可以看到与这个网络接口相关的默认网关和IPv6地址。
ipconfig和ifconfig命令也可以修改网络接口的配置。route命令允许我们更深入地探索网络配置,了解系统如何将流量路由到其他目的地。
四、netstat
如果我们想了解一个设备上的活动网络连接情况,可以通过在Windows或Mac系统上使用netstat命令来获得这些信息。让我们在MacBook上试一试。输入netstat,然后立即被大量的信息淹没了。
这告诉了我们,这台的设备上所有的活动网络连接。可以看到每个连接中涉及的IP地址的信息。还有该ESTABLISHED的状态。已建立意味着连接正在进行,CLOSE_WAIT意味着连接正在关闭。其中每一条都代表一个单独的网络连接。这要么是从另一个来源发出的,要么是从另一个来源进入我的电脑的。这个命令在Windows系统上的工作方式是一样的。在Linux系统上,netstat命令已经过时了,我们现在使用一个叫做SS的命令来获得这些信息。在这里我可以看到,我在Linux系统上使用SS命令得到的信息与在Mac或Windows系统上使用netstat命令得到的信息类型相同。
五、netcat
NC是Netcat的简称,Netcat命令允许我们在网络连接上发送和接收原始文本。这可能是一个非常有用的故障排除工具,但它也是攻击者用来向远程服务器发送原始、恶意命令的技术。我们在Mac上使用NC命令,然后输入需要连接的系统linkedin.com,随后输入想用于连接的端口。我们想用Netcat来测试Web服务器的命令,所以将在端口号为80,这是HTTP的默认端口,用于未加密的网络连接。
现在,当我们输入这个命令回车后,看起来好像什么都没有发生,只是看到一个空白行。这时我们可以开始向服务器发送命令,我们得使用我们所打开的连接端口的语言发送命令。因为我们在80端口打开了连接,这是HTTP使用的端口,所以如果我们期望得到响应,需要向服务器发送HTTP命令。现在,最基本的命令是GET命令,它可以检索一个网页,而我们要问的是home页面。
回车后,我们就能过得到home页面的HTML代码:
这与我们linkedin.com使用一个普通的Web浏览器访问linkedin.com的主页是一样的,只是没有将HTML代码呈现出来而已。需要注意,这个NC命令在Mac和Linux系统上工作,但在Windows操作系统中没有内置的类似命令。
六、ARP
ARP,用于在本地网络的IP地址和Mac地址之间进行翻译。DNS,它在域名和IP地址之间进行翻译。我们可以把ARP看作是本地网络的等同物,它允许机器找到对方的Mac地址,以便它们能够通过以太网进行通信。 ARP只在所有系统都通过以太网通信的本地网络中工作。
ARP命令允许我们显示自己系统所存储的ARP信息。这通常包括ARP缓存的内容,让我们知道本地系统在本地网络上使用什么信息进行通信。我们可以使用ARP -a在MacBook上ARP缓存的内容。如下:
在这里看到的是这个系统仅仅通过观察本地网络上的通信就已经学会的IP地址和Mac地址关联。我们在这里看到一个IP地址列表,所有的IP地址都以10点0点0开头。然后我们看到与这些IP地址中的每一个相关的Mac地址。如果这个系统想与这些IP地址中的任何一个通信,它可以通过使用与该IP地址相关的Mac地址在本地网络上直接通信。而这个命令在Windows系统上的工作方式也是一样的。我们只是看到,在Windows上显示的输出比在Mac上显示的要干净一些。
七、curl
Curl是一个非常有用的命令行工具,它允许我们在不使用网络浏览器的情况下从互联网上检索网页、文件和其他资源。如下是Curl的操作。
1.获取网页
例如,我们使用Curl来检索网站certmike.com。要做到这一点,我们只需键入curl命令,然后提供我的网站的完整URL并点击回车。然后Curl就会去检索那个页面,并把回复结果显示在屏幕上。
这实际上不是很有用,因为我们自己不读HTML,即使能读,在这里看到的只是一堆jQuery和其他JavaScript,这不会帮助我们弄清楚这个网页上有什么。现在,我可以做的是把这些输出保存到一个文件中。要做到这一点,我们只需使用同样的命令,再次提供测试页面的URL。然后将输出重定向到一个文件。现在这一次,Curl不会把页面的内容转到我的屏幕上。相反,在屏幕上,它只是在下载页面的时候给我显示了一点状态更新。
但是现在如果我们看一下目录,就可以看到有那个certmike.html文件,然后现在可以用more或其他文件命令来浏览这个文件,并更随意地查看其内容或用编辑器来编辑这个文件的内容。
2.下载文件
如果我们知道一个文件的直接URL,就也可以用Curl来下载这个文件。例如如下的操作:
3.嵌入命令行和检查头信息
如果我们用命令行工作,curl是非常有用的,它也非常有用,因为我们可以把Curl命令嵌入到脚本中。我们不能在脚本中很容易地使用网络浏览器实现自动化,但也可以使用curl从命令行中执行许多与网络浏览器相同的动作。最后,我们也可以用Curl来检查网站的HTTP头。比方说,如果我们不想看certmike.com的内容,而只想看那些HTTP头信息。我可以用curl -I(大写的I),然后再次提供那个URL。
八、theHarvester
Harvester是一个Python脚本,在对一个组织进行初步探测时,它可以发挥令人难以置信的作用。这可能是我们作为网络安全专家在进行渗透测试,也可能是攻击者在攻击的早期阶段进行初步侦察。
我们需要给 "Harvester "一个域名,它将去扫描几十个不同的来源,寻找与该域名相关的IP地址、电子邮件地址和服务器,当我们试图建立渗透测试或攻击时,可以把它们作为目的目标。我们需要记住Harvester是一个Python脚本,所以我们启动Python并告诉它运行theHaverster.py脚本。然后我们需要提供几个参数。首先,需要使用minus-D标志,是我们想要的目标域名,nd.edu。然后,我使用minus-B标志来指定我希望Harvester去收获的来源。我们只是要告诉它扫描所有它可以使用的来源,然后再要告诉它把它的搜索限制在,比如说,200个电子邮件地址,只是为了使它运行得更快一点。回车后开始运行。
当它完成后,它将向我们提供一份它能够从所有这些不同来源收集的所有信息的总结报告,这份报告很长。现在,我们看到的是,它发现了113个与nd.edu域名相关的不同IP地址。此外,次报告还有其他各种信息。
九、Cukoo
Cuckoo是一个恶意软件分析工具。更具体地说,Cuckoo是一个沙盒(Sandbox) 环境,允许我们测试可疑的文件,以确定它们是否可能显示恶意活动。它非常强大,有一些相当先进的功能。最重要的是,Cuckoo是一个开源工具,我们可以免费使用。如下是它的几大功能:
- Cuckoo能够分析恶意的可执行文件。这是任何恶意软件分析工具的核心功能;
- 同时它也可以查看办公生产力文件、PDF和其他文件类型、电子邮件信息,甚至是网站URL;
- Cuckoo追踪可疑文件的API调用以及它们的其他系统行为,还使用Tcpdump捕获由该文件生成的任何网络流量;
- Cuckoo可以进行深度内存分析,在各种虚拟化平台上完成这一切,包括Windows、Mac OS、Linux和Android环境。
如果我们发现自己在工作中需要进行恶意软件分析,Cuckoo提供了一个很好的起点。
十、端口扫描器(Port Scanner)
测试系统的安全问题是安全专业人员执行的最重要的任务之一。如果你我们现一个问题并加以纠正,比攻击者发现并利用它要好得多。
漏洞评估工具可以自动完成漏洞扫描的过程。这些工具有三大类:
- 端口扫描器(Port Scanner),它只是探测系统的开放网络端口;端口扫描器检查服务器上所有可能的65,535个网络端口,看看哪些端口可能是开放的。最流行的端口扫描工具是一个叫做Nmap的程序。如下所示:
我们可以看到的是这个系统有两个端口开放。这两个开放的端口是网络服务器的80端口和远程桌面协议连接的3389端口。现在,根据端口号,我们知道了3389端口代表了一个Windows系统,也知道80端口意味着这是一个Web服务器。如果我们是攻击者,就可以使用这些端口来开始针对这些服务。如果是一个安全专家,则可以确保这些是我真正想要暴露的服务,或者我们可以开始向外部关闭它们的访问权。 - 漏洞扫描器(Vulnerability Scanner),它检查这些端口的已知漏洞;
- 以及应用扫描器(Application Scanner),它深入到网络应用中去探测缺陷。
最后,我们也应该熟悉scanless脚本。scanless是一个Python脚本,它允许我们使用各种不同的端口扫描器来自动进行端口扫描。我们可以从网上下载scanless Python脚本并在选择的系统上使用它。
十一、漏洞扫描(Vulnerability scanners)
漏洞扫描器比端口扫描要深入得多。它们不是简单地检查哪些端口是开放的,而是深入研究哪些服务在使用这些端口的细节。它们还拥有一个所有已知漏洞利用的数据库,并测试服务器,看它是否包含任何这些漏洞。漏洞扫描器的报告为系统修复提供了重要信息。然而,在攻击者的手中,这些修复信息可以成为一个利用的路线图。
一个流行的漏洞扫描工具是一个叫做Nessus的基于Web的工具。我们在一台服务器上运行了这个工具,然后试着用Nessus扫描一台Windows服务器。这里是Nessus的网页界面,正在对那台Windows服务器进行扫描。
完成一次Nessus扫描所需的时间根据我们所使用的插件数量和服务器的性质以及其他一些因素(包括网络带宽)而有所不同。但通常情况下,完成一台服务器的扫描可能需要10甚至15分钟。而当我们看该扫描的结果时,我们可以看到Nessus是发现了发现了四个medium漏洞和20个info漏洞。我们真正要挖掘和查看的是那些medium的漏洞。
从下图可以看到,4个medium的漏洞都是围绕着这个网络服务器上的SSL和TLS的使用。这里说,SSL证书不能被信任,它支持中等强度的密码套件,而且它是一个自签名的证书。那么,第一个和第三个漏洞是相关的。
因此,我们可以使用像Nessus这样的工具来探测自己的系统的漏洞,然后真正得到一个路线图,然后我们可以修复这些漏洞,提高自己环境的安全性。
最后,我们也应该熟悉Sn1per,这是一个渗透测试工具,它可以自动进行漏洞扫描,在测试人员的手动工作阶段之前为他们提供详细的信息。
整理资料来源:
https://www.linkedin.com/learning/paths/become-a-comptia-security-plus-certified-security-professional-sy0-601