安全和匿名
BECOMING SECURE AND ANONYMOUS
今天,几乎我们在互联网上做的一切都被跟踪。无论是谷歌跟踪我们的在线搜索、网站访问和电子邮件,还是美国国家安全局(NSA)对我们的所有活动进行编目,无论谁在跟踪我们,我们的每一次在线活动都会被记录、编入索引,然后被挖掘出来,以造福他人。普通个人,尤其是黑客,需要了解如何限制这种跟踪,并在网上保持相对匿名,以限制这种无处不在的监视。
在本章中,我们将介绍如何使用以下四种方法匿名(或尽可能接近)浏览互联网:
The Onion Network
洋葱网络
代理服务器
虚拟专用网络
私有加密的电子邮件
没有一种方法能保证你的活动不被窥探,如果有足够的时间和资源,任何事情都能被追踪。然而,这些方法可能会使跟踪器的工作更加困难。
互联网是如何出卖我们的
首先,让我们从更高的层次来讨论我们在互联网上的活动是如何被跟踪的。我们不会讨论所有的跟踪方法,也不会过多地讨论任何一种方法的细节,因为这超出了本书的范围。事实上,这样的讨论可能会占用一整本书的篇幅。
首先,您的 IP 地址标识您在互联网上的身份。从您的机器发送的数据通常会被标记为您的 IP 地址,从而使您的活动易于跟踪。其次,谷歌和其他电子邮件服务将“阅读”您的电子邮件,寻找关键词,以更有效地为您服务广告。让我们先来看看 IP 地址是如何在互联网上泄露信息的。
当您通过互联网发送数据包时,它包含数据的源和目标的 IP 地址。通过这种方式,数据包知道它要去哪里以及在哪里返回响应。每个数据包通过多个互联网路由器跳转,直到找到它的目的地,然后跳转回发送方。对于一般的互联网冲浪,每一跳都是数据包通过路由器到达目的地。发送方和目的地之间可以有多达 20-30 跳,但通常任何数据包在不到 15 跳的时间内就能找到到达目的地的路径。
当数据包在互联网上传播时,任何截获数据包的人都可以看到是谁发送了数据包,它到过哪里,它要去哪里。这是网站可以告诉您到达目的地并自动登录的一种方式,也是有人可以跟踪您在互联网上的位置的方式。
要查看数据包在您和目的地之间的跳转情况,可以使用traceroute命令,如下所示。只需输入traceroute和目标 IP 地址或域,该命令将向目标发送数据包并跟踪这些数据包的路由。
kali >traceroute google.com
traceroute to google.com (172.217.1.78), 30 hops max, 60 bytes packets
1 192.168.1.1 (192.168.1.1) 4.152 ms 3.834 ms 32.964 ms
2 10.0.0.1 (10.0.0.1) 5.797 ms 6.995 ms 7.679 ms
3 96.120.96.45 (96.120.96.45) 27.952 ms 30.377 ms 32.964 ms
snip
18 lgal15s44inf14.le100.net (172.217.1.78) 94.666 ms 42.990 ms 41.564 ms
如你所见,ww.google.com 与我的互联网距离是 18 跳。您的结果可能会不同,因为您的请求来自不同的位置,而且谷歌在全球有许多服务器。此外,数据包在互联网上并不总是采用相同的路由,因此您可能会将另一个信息包从您的地址发送到相同的站点,并接收不同的路由。让我们看看如何用 Tor 网络来掩饰这一切。
洋葱路由系统
上世纪 90 年代,美国海军研究办公室(ONR)着手开发一种匿名浏览互联网进行间谍活动的方法。该计划是建立一个路由器网络,它与互联网的路由器是分开的,可以加密流量,并且只存储前一个路由器的未加密 IP 地址-这意味着一路上所有其他路由器地址都加密了。他们的想法是,任何观察流量的人都无法确定数据的来源或目的地。
这项研究在 2002 年被称为“洋葱路由器(Tor)项目”,现在任何人都可以使用它在 web 上进行相对安全且匿名的导航。
Tor 是如何工作的
通过 Tor 发送的数据包不是通过常规路由器发送的,而是通过全世界 7000 多台路由器组成的网络发送的,这要感谢志愿者们允许 Tor 使用他们的计算机。在使用完全独立的路由器网络的基础上,Tor 加密每个数据包的数据、目的地和发送方 IP 地址。在每一跳,接收到的信息被加密,然后在下一跳被解密。这样,每个包只包含关于路径上的前一跳的信息,而不包含源的 IP 地址。如果有人拦截流量,他们只能看到上一跳的 IP 地址,网站所有者只能看到发送流量的最后一个路由器的 IP 地址(参见图 13-1),这确保在互联网上的相对匿名性。
图 13-1:Tor 如何使用加密流量数据
要启用 Tor,只需从https://www.torproject.org/安装Tor浏览器。一旦安装完毕,它将如图13 -2 所示,您可以像使用任何老式互联网浏览器一样使用它。通过使用这个浏览器,您将通过一组单独的路由器来浏览互联网,并且能够在不被“老大哥”(隐喻某超级大国)跟踪的情况下访问站点。不幸的是,权衡的结果是通过 Tor 浏览器浏览会慢得多,因为没有那么多路由器,网络带宽有限。
图 13-2:Tor 浏览器的登录页面
除了能够访问传统互联网上几乎任何网站外,Tor 浏览器还能够访问暗网。构成暗网的网站需要匿名,因此它们只允许通过 Tor 浏览器访问,并且它们的地址以.onion 结尾用于其顶级域名(TLD)。暗网因非法活动而臭名昭着,但也有一些合法的服务。但请注意:在访问暗网时,您可能会遇到很多人会觉得冒犯的内容。
安全问题
美国和其他国家的情报和间谍机构认为 Tor 网络是对国家安全的威胁,认为这样一个匿名网络可以让外国政府和恐怖分子在不被监视的情况下进行交流。因此,许多强大的、雄心勃勃的研究项目正在努力打破 Tor 的匿名性。
Tor 的匿名曾经被这些当局破坏过,而且很可能会再次被破坏。例如,NSA 运行自己的 Tor 路由器,这意味着当您使用 Tor 时,您的流量可能正在通过 NSA 的路由器。如果您的流量正在退出 NSA 的路由器,那就更糟了,因为退出路由器总是知道您的目的地。NSA 还有一种被称为“流量关联”(traffic correlation)的方法,该方法涉及寻找进出流量的模式,能够打破 Tor 的匿名性。虽然这些破解 Tor 的尝试不会影响 Tor 在商业服务(如 Google)中隐藏您身份的有效性,但它们可能会限制浏览器在间谍机构中保持匿名的有效性。
代理服务器
在互联网上实现匿名的另一种策略是使用代理,代理是充当流量中间商的中间系统:用户连接到代理,并在传递代理之前向其提供流量的 IP 地址(参见图 13-3)。当流量从目标返回时,代理将流量发送回源 IP。通过这种方式,流量似乎来自代理,而不是原始 IP 地址。
图 13-3:通过代理服务器运行流量
当然,代理可能会记录您的流量,但调查人员必须获得传票或搜查令才能获得这些日志。为了使您的流量更加难以跟踪,您可以在称为代理链的策略中使用多个代理,这一策略我们将在本章稍后讨论。
Kali Linux 有一个优秀的代理工具,称为 proxychain,您可以设置它来隐藏您的流量。proxychain 命令的语法很简单,如下所示:
kali >proxychains \ \
您提供的参数可能包括一个 IP 地址。例如,如果您想使用命令 nmap 以通过代理链匿名方式扫描一个站点,则应输入以下内容:
kali >proxychains nmap -sT - Pn \
这将通过代理将 nmap -sS 扫描命令隐身发送到给定的 IP 地址。然后,该工具自己构建代理链,因此您不必担心它。
在配置文件中设置代理
在本节中,我们为要使用的 proxychain 命令设置了一个代理。与 Linux/Unix 中的几乎所有应用程序一样,proxychain 的配置是由配置文件管理的,即是/etc/proxychain .conf。使用以下命令在您选择的文本编辑器中打开配置文件(如果需要,用您选择的编辑器替换 leafpad):
kali >leafpad /etc/proxychains.conf
您应该看到类似于代码清单 13-1 中所示的文件。
# proxychains.conf VER 3.1
# HTTP, SOCKS4, SOCKS5 tunneling proxifier with DNS.
# The option below identifies how the ProxyList is treated.
# only one option should be uncommented at time,
# otherwise the last appearing option will be accepted
#
# dynamic_chain
#
# Dynamic Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# at least one proxy must be online to play in chain
# (dead proxies are skipped)
# otherwise EINTR is returned to the app strict chain
# Strict Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# all proxies must be online to play in chain
# otherwise EINTR is returned to the app M
snip
清单 13-1:proxychains.conf 文件
将此文件向下滚动到第 61 行,您应该看到 ProxyList 部分,如清单 13-2 所示。
[ProxyList]
# add proxy here...
# meanwhile
# defaults set to "tor"
socks4 127.0.0.1 9050
清单 13-2:用于添加代理的配置文件部分
我们可以通过输入要在此列表中使用的代理的 IP 地址和端口来添加代理。现在,我们将使用一些免费代理。你可以通过谷歌搜索“免费代理”或使用网站http://www.hidemy.name找到免费代理,如图3-4。 但请注意,在现实黑客活动中使用免费代理并不是一个好主意。我将在本章后面详细介绍这一点。这里使用的示例仅用于教育目的。
图 13-4:http://www.hidemy.name中的免费代理
填写表单中的详细信息或单击搜索,然后使用以下格式将其中一个生成的代理添加到 proxychains.conf 文件中:
Type IPaddress Port
这是一个例子:
[ProxyList]
# add proxy here...
socks4 114.134.186.12 22020
# meanwhile
# defaults set to "tor"
# socks4 127.0.0.1 9050
需要注意的是,如果您没有输入自己的代理,那么 proxychain 默认使用 Tor。清单 13-2 中的最后一行指示代理链首先通过主机 127.0.0.1 上的 9050 端口发送流量(默认 Tor 配置)。如果您没有添加自己的代理,并希望使用 Tor,那么请保持现状。如果您不使用 Tor,您将需要注释掉这一行(在它之前添加一个#)。
虽然我很喜欢 Tor,但它通常很慢。而且,由于 NSA 已经破解了 Tor,我不太可能依赖它的匿名性。因此,我注释掉这一行并添加自己的代理集。
我们来测试一下。在本例中,我将打开浏览器 Firefox,通过代理发送流量,让它匿名导航到https://www.hackers-arise.com/。
命令如下:
kali >proxychains firefox www.hackers-arise.com
这将通过我选择的代理成功地在 Firefox 中打开https://www.hackers-arise.com/并将结果返回给我。对于任何跟踪此流量的人来说,似乎是我的代理导航到了https://www.hackers-arise.com/,而不是我的IP地址。
一些更有趣的选择
现在我们已经让 proxychain 工作了,让我们看看可以通过 proxychain.conf 文件配置的其他选项。正如我们现在所设置的,我们只是使用一个代理。但是,我们可以放入多个代理并使用它们,我们可以使用列表中的有限数量,或者我们可以让 proxychain 随机改变顺序。
让我们尝试所有这些选项。
添加更多的代理
首先,让我们向列表中添加更多代理。回到http://www.hidemy.name并找到更多的代理IP地址。然后在proxychain .conf 文件中添加更多的代理,如下所示:
[ProxyList]
# add proxy here...
socks4 114.134.186.12 22020
socks4 188.187.190.59 8888
socks4 181.113.121.158 335551
现在保存这个配置文件,并尝试运行以下命令:
kali >proxychains firefox www.hackers-arise.com
您不会注意到任何差异,但是您的数据包现在正在通过几个代理进行传输。
动态链接
在我们的 proxychain.conf 文件中有多个 ip,我们可以设置动态链接(dynamic chaining),它通过列表中的每个代理运行我们的流量,如果其中一个代理宕机或没有响应,则自动转到列表中的下一个代理,而不会抛出错误。如果我们不设置这个,则其中一个失败的代理将会破坏我们整个的请求。
回到 proxychain 配置文件中,找到 dynamic_chain 行(第 10 行)并取消注释,如下所示。还要确保注释掉 strict_chain 行(如果还没有的话)。
# dynamic_chain
#
# Dynamic – Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# at least one proxy must be online to play in chain
snip
这将实现我们代理的动态链接,从而允许更大的匿名性和无故障的黑客攻击。保存配置文件并随意试用它。
随机链接
最后一个代理技巧是随机链接(random chaining)选项,其中 proxychain 将从列表中随机选择一组 IP 地址,并使用它们创建代理链。这意味着每次我们使用 proxychain 时,代理对目标的外观都会有所不同,这使得从源跟踪我们的流量变得更加困难。这个选项也被认为是“动态”的,因为如果一个代理关闭,它将跳到下一个代理。
回到/etc/proxychain.conf 文件中,通过在每个行代码的开头添加一个#来注释掉 dynamic_chain 和 strict_chain 这两行代码,然后取消对 random_chain 行代码的注释。我们一次只能使用这三个选项中的一个,所以在使用 proxychain 之前一定要注释掉其他选项。
接下来,使用 chain_len 查找并取消对该行的注释,然后给出一个合理的数字。这一行确定在创建随机代理链时将使用链中的多少 IP 地址。
# dynamic_chain
#
# Dynamic – Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# at least one proxy must be online to play in chain
#
# strict_chain
#
# Strict Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# all proxies must be online to play in chain
# otherwise EINTR is returned to the app
#
random_chain
# Random Each connection will be done via random proxy
# (or proxy chain, see chain_len) from the list.
# this option is good to test your IDS :)
# Makes sense only if random_chain
chain_len = 3
在这里,我已经取消了 chain_len 的注释,并将其赋值为 3,这意味着 proxychain 现在将使用/etc/proxychain .conf 文件中我的列表中的三个代理,随机选择它们,并在代理关闭时转移到下一个代理。请注意,虽然这种方法肯定会增强匿名性,但也会增加在线活动的延迟。
现在您已经知道如何使用 proxychain,您可以在相对匿名的情况下进行黑客攻击。我说“相对”,是因为在 NSA 和 FSB(美国国家安全局和联邦安全局)监视我们的网络活动的情况下,没有绝对可靠的方法来保持匿名,但我们可以借助 proxychain 来更有效地进行侦查。
安全问题
关于代理安全性的最后一个注意事项是,一定要明智地选择您的代理:proxychains 只与您使用的代理一样好。如果您希望保持匿名,请不要使用前面提到的免费代理。黑客使用可信任的付费代理。事实上,免费代理很可能会出售你的 IP 地址和浏览历史。正如著名密码学家和安全专家布鲁斯施奈尔(Bruce Schneier)曾经说过的,“如果有些东西是免费的,那么你就不是客户的产品,你就是它的用户。”换句话说,任何免费产品都有可能收集你的数据并出售。不然他们为什么要免费提供代理呢?
虽然您离开代理的流量的 IP 地址是匿名的,但是监视机构可以通过其他方式识别您。例如,代理的所有者将知道您的身份,如果受到足够的间谍或有管辖权的执法机构的压力,可能会提供您的身份来保护他们的业务。了解代理作为匿名来源的局限性是很重要的。
虚拟专用网络
使用虚拟专用网(VPN)是保持您的 web 流量相对匿名和安全的有效方法。VPN 用于连接到一个中间的互联网设备,例如路由器,它将您的流量发送到其最终目的地,并使用该路由器的 IP 地址进行标记。
使用 VPN 当然可以增强您的安全性和隐私,但它不能保证匿名。您所连接的互联网设备必须记录或记录您的 IP 地址,以便能够正确地将数据发送回您,这样任何能够访问这些记录的人都可以发现关于您的信息。
VPN 的优点是简单易用。您可以在 VPN 提供商那里开户,然后在每次登录计算机时无缝连接 VPN。您可以像往常一样使用浏览器来浏览 web,但是任何人看到您的流量来自互联网 VPN 设备的 IP 地址和位置,而不是您自己的。另外,您与 VPN 设备之间的所有通信都是加密的,所以即使您的互联网服务提供商也看不到您的通信。
除此之外,VPN 可以有效地规避政府控制的内容和信息审查。例如,如果您的国家政府限制您访问具有特定政治信息的网站,您可以使用您所在国家/地区以外的 VPN 来访问该内容。 一些媒体公司,如 Netflix,Hulu 和 HBO,将其内容的访问权限限制为源自其本国的 IP 地址。在这些服务允许的国家/地区使用 VPN 通常可以帮助您解决这些访问限制。
根据 CNET,一些最好和最受欢迎的商业 VPN 服务如下:
IPVanish
NordVPN
ExpressVPN
CyberGhost
Golden Frog VPN
Hide My Ass (HMA)
Private Internet Access
PureVPN
TorGuard
Buffered VPN
大多数 VPN 服务每年收费 50 - 100 美元,许多还提供 30 天免费试用期。要了解如何设置 VPN 的更多信息,请从列表中选择一个并访问该网站。您应该可以找到非常容易遵循的下载、安装和使用说明。
VPN 的优点是所有流量在离开计算机时都是加密的,从而保护您不受窥探,当您访问一个站点时,您的 IP 地址被 VPN IP 地址所掩盖。与代理服务器一样,VPN 的所有者拥有您的原始 IP 地址(否则他们无法将您的流量发回给您)。如果他们受到间谍机构或执法部门的压力,他们可能会放弃你的身份。防止这种情况的一种方法是只使用承诺不存储或记录任何此类信息的 vpn(并希望它们是真实的)。这样,如果有人坚持要求 VPN 服务提供商将数据交给用户,那么就没有数据。
加密的电子邮件
免费的商业电子邮件服务,如 Gmail,雅虎!,Outlook Web Mail(前身为 Hotmail)的免费是有原因的:它们是追踪你的兴趣和提供广告的工具。如前所述,如果服务是免费的,那么您就是产品,而不是客户。此外,电子邮件提供者的服务器(例如谷歌)可以访问电子邮件的未加密内容,即使您使用 HTTPS。
防止窃听你的电子邮件的一个方法是使用加密的电子邮件。ProtonMail,如图 13-5 所示,从一端加密到另一端或从一个浏览器加密到另一个浏览器。这意味着您的电子邮件是在 ProtonMail 服务器上加密的,即使是 ProtonMail 管理员也无法读取您的电子邮件。
ProtonMail 是由一群年轻的科学家在瑞士欧洲核子研究中心(CERN)的超级对撞机设施工厂建立的。瑞士在保护机密方面有着悠久而传奇的历史(还记得你经常听说的那些瑞士银行账户吗?) ProtonMail 的服务器位于欧盟,该网络在分享个人数据方面有着比美国法律更为严格的法律规定。ProtonMail 不收取基本帐户,但提供保费帐户象征性的费用。需要注意的是,在与非 protonmail 用户交换电子邮件时,可能有部分或全部电子邮件没有加密。有关详细信息,请参见 ProtonMail 支持知识库。
图 13-5:ProtonMail 登录界面
总结
我们不断受到商业公司和国家情报机构的监视。为了保证数据和 web 传输的安全性,您需要实现本章中讨论的至少一种安全措施。通过组合使用它们,您可以最大限度地减少在 Web 上的占用空间并使数据更加安全。