📜  Pharming 攻击预防和示例(1)

📅  最后修改于: 2023-12-03 15:33:27.395000             🧑  作者: Mango

Pharming 攻击预防和示例

Pharming 攻击指的是通过改变域名系统(DNS)的解析结果,将用户发送到恶意网站上。这种攻击相对于传统的网络欺诈手段更为隐蔽,可以直接窃取用户的敏感信息,例如账户、密码等。

为了防止 Pharming 攻击,我们需要采取以下措施:

1. 安装安全软件

安装防病毒软件或防火墙可以有效防止恶意软件的侵入,从而减少 Pharming 攻击的风险。

2. 按需开启网址验证功能

某些浏览器和社交媒体平台已经开启了网址验证功能,可以提高网站访问的安全性。但如果你需要访问可信的第三方网站,则需要谨慎开启这个功能,以免出现 false positive(误报)的情况。

3. 清除 DNS 缓存

定期清除操作系统和浏览器的 DNS 缓存可以帮助及时发现和排除受感染的 DNS 污染问题。

4. 使用 HTTPS 协议

HTTPS 是一种安全的通信协议,可以帮助对抗 Phishing,MitM 等攻击。访问银行、电商等网站时,务必确认 URL 地址中是否包含 HTTPS。

5. 警惕邮件及短信

商业邮箱、社交媒体等平台的密码恢复操作可能会暴露用户密码。此外,由于 SMS 能够伪造发送号码和内容,黑客可以通过短信伪装成银行、电商等身份来实施诈骗行为。因此,接收到的未经验证的邮件和短信应予以警惕。

6. 远离公共 Wi-Fi

公共 Wi-Fi 存在被劫持的风险。黑客可以通过篡改 DNS,使用户访问被修改的页面。在外出时,尽量使用自己的移动数据网络或VPN网络,避免使用公共 Wi-Fi 接入网络。

7. 配置防 DNS 劫持

将 DNS 改为公共 DNS 或网络运营商提供的 DNS 可以增加 DNS 解析的安全性。此外,DNSPOD 和阿里云等服务商也提供了防DDoS攻击和防DNS劫持的服务,注意开启。

8. 利用 DNSSEC

DNSSEC 是一种利用数字签名来保护 DNS 信息的安全机制。使用 DNSSEC 可以有效防范 Pharming 攻击,提高 DNS 解析的安全性。

示例

在以下示例中,一个恶意攻击者通过欺诈、篡改、转发等方式将目标用户的 DNS 解析到恶意网站上,从而获取用户的敏感信息。

为此,我们可以通过以下方式来防止此类攻击:

// 防止 DNS 污染攻击
if (dns_resolved_ip !== expected_ip) {
  throw new Error('DNS resolution error');
}

// 校验 HTTPS 协议
if (!/https:(?:\d+)\/\//i.test(url)) {
  throw new Error('The URL must use HTTPS protocol');
}

// 配置防 DNS 劫持
dns.config({
  dnsServers: [
    '8.8.8.8',
    '8.8.4.4',
    '208.67.222.222',
    '208.67.220.220'
  ],
  timeout: 8000,
  worker: 4,
  // 防止 DNS 劫持
  onResolved: function (ip) {
    if (ip !== 'Expected IP address') {
      throw new Error('DNS resolution error');
    }
  }
});

// 配置 DNSSEC
dns.resolveSec(domainName, function (err, result) {
  if (err) {
    throw new Error('DNSSEC verification failed');
  }
});

以上代码片段通过防止 DNS 污染攻击、校验 HTTPS 协议、配置防 DNS 劫持和 DNSSEC 来确保网络传输的安全性。