加密交易所和加密钱包的测试方法


加密货币钱包和加密货币交易所可能遭受黑客攻击(或遭受用户,开发人员的愚蠢行为以及系统逻辑问题的困扰)。 测试可以帮助您识别应用程序逻辑中的漏洞和问题,但是,我没有找到一种正式的方法来编写在测试过程中应注意的事项。 测试了十二个交易所和钱包后,我决定正式进行测试程序,有兴趣的人欢迎您。

在测试交易所和钱包时,我提请注意它们的功能,并在下面以一种小技巧的形式(但有序地)阐述了它们的测试方面。
首先,您需要了解什么对客户很重要? 对于客户而言,重要的是不要窃取来自交易所或钱包的钱以及保留用户的个人数据。 而且,由于实际上每个交易所或钱包在很大程度上都是一个网站或网络应用程序,因此客户希望对黑客攻击进行模拟,即 黑盒测试(请参阅表1),但是出于测试完整性的考虑,灰盒测试的选择更为频繁(请参见表1)。
要测试工作逻辑,您需要测试加密货币。 并且由于每个交易所在存入/提取资金方面都有其自身的限制,因此测试加密货币的数量应至少为允许提取的最低数量,并且应足以进行至少5笔买卖和/或投入产出交易。

表1.测试类型取决于提供的信息。
型式内容描述
黑匣子
  • 在不涉及客户技术团队的情况下进行测试
灰盒
  • 与客户的技术团队联系
  • 添加正在“白名单”中测试的帐户
  • 客户提供测试所需的资金(硬币)

白盒
  • 全面的客户支持
  • 提供应用程序源代码
  • 提供日志
  • 授予访问不同权限的权限
  • 提供测试所需数量的资金(硬币)



在Hacken,我们按以下顺序测试漏洞:
  1. 研究公开可用的信息。
  2. 通过自动化工具进行验证。
  3. 在手动模式下检查。
  4. 报告写作。


测试加密交易所和加密钱包的功能

1.测试KYC验证-这是大多数加密交易所和ICO的要求。

本节讨论测试文件的下载(确认个人身份的照片或屏幕截图)。

  • 检查将可执行文件下载到系统服务器的能力
  • 检查盗窃扫描文档的可能性-暴力破解的文件名和目录。
  • 检查对服务器文件系统的未授权访问。

2.投入产出资金的检验

  • 在存入/提取资金时检查四舍五入数字的正确性。
  • 在存入/提取资金时检查钱包地址的替换(最简单的错误是不检查发送者和接收者的钱包,但这非常关键)。
  • 在存入/提取资金时检查工作逻辑。
  • 检查是否绕过了购销确认操作(两因素验证码,OTP,特殊密码)。
  • 检查比赛条件撤回漏洞。
  • 检查超出投入/产出资金限制的可能性。

3.测试加密货币的买卖(仅适用于交易所)

  • 买卖资金时检查四舍五入数字的正确性。
  • 验证购买和销售过程中的地址欺骗。
  • 检查买卖资金时的工作逻辑。
  • 检查替换或修改卖单的可能性。
  • 检查是否绕过了购销确认操作(两因素验证码,OTP,特殊密码)。
  • 在购买/销售操作的执行中检查种族条件的可能性。
  • 检查欺骗钱包地址的可能性。


Web部件测试

4.测试注册过程

  • 在注册过程中检查输入参数的过滤。
  • 验证用户确认功能。
  • 检查是否可以遍历用户名,电子邮件地址和电话号码。
  • 检查在注册过程中绕过验证码检查的可能性。
  • 重置密码和更改数据时检查漏洞和逻辑。

5.测试身份验证过程

  • 身份验证过滤检查。
  • 检查为词典中的帐户选择用户名和密码的可能性(防止暴力破解)。
  • 检查旁路检查验证码。
  • 验证两因素身份验证绕过
  • 检查禁用两因素身份验证的能力。
  • 在认证过程中检查数据是否泄漏。

6.测试在交易所开发中使用的框架和技术

在测试漏洞期间,有必要确定与之进行交换的技术和方法(框架)。 因此,在了解开发钱包或交易所所用的技术时,您会发现在开源中已经发现的可能的利用或漏洞。 在发布或正确配置安全系统(例如,CloudFlare)时,有必要验证所有第三方库,框架和软件都没有公开可用的漏洞。

7. OWASP测试

OWASP方法包含一个检查清单,该清单检查网站的所有可能的安全风险。 因此,通过这种检查,您可以确定可能的漏洞(而且,更多取决于经验的直接程度和测试人员的技能)

最常发现:

  • 在后端检查过滤参数,因为通常仅在前端检查过滤参数
  • 缺少HTTP请求标志(这不是很关键),但是可能导致密码缓存或发生Clickjacking攻击的可能性
  • 缺乏会话管理:这可能导致以下事实:当Cookie被窃或攻击者可以直接访问计算机或电话时,可以执行有效用户的操作
  • 开放服务的脆弱版本
  • 使用具有弱加密算法的JSON Web令牌(JWT)

8.测试API

  • 通过编写用于与API交互的程序模块并检查客户端和API上可能的逻辑漏洞来检查API漏洞。
  • 使用Swagger查看请求的结构,有必要了解需要发送到服务器的内容,从而检查API的漏洞。

9.测试WebSockets

通常用于测试的软件:

  • Burpsuite
  • Acunetix
  • Zenmap
  • 猫头鹰黄蜂
  • Sqlmap

和其他需要的工具。

结论:

在本文中,我尝试规范化和构建测试交易平台的方法,并将其应用于10多个测试交易平台和钱包的案例中。 我们将此方法学作为测试Hacken交易所的主要方法学。 如今,区块链技术,去中心化解决方案和加密货币的行业正处于普及高峰。 常见问题解答和手册的过时速度比摩尔定律快得多,因此,本文并不声称它是测试加密货币交易所的特殊手册,它仅表示重复此过程所获得的经验。

Source: https://habr.com/ru/post/zh-CN418879/


All Articles