일반적으로 암호화폐 투자자들은 모바일 앱으로 제공되는 디지털 지갑에 암호화폐를 보관하는 경우가 대부분이다. 이를 이용하여 해커들이 암호화폐 지갑을 공격하는 방법은 무수히 많으나, 아래의 일반적인 5가지 공격 방법으로부터 앱을 보호하면 소비자에게 제공되는 지갑 보호 기능을 크게 향상할 수 있다.
애플리케이션 수준에서 키 암호화는 절대적으로 필요하다. 기본 설정 영역, 애플리케이션 샌드박스, SD 카드 또는 클립보드와 같은 외부 영역에서 키가 암호화되지 않은 경우에는 해커가 이 키를 훔칠 수 있다. 키가 있으면 지갑에 있는 자금에 접근이 가능하기 때문에 키 암호화를 반드시 해야 하며, 암호화를 통해 보호 기능이 크게 향상될 수 있다.
암호화폐 지갑에 대한 키와 암호 구문 또한 동적으로 도난당할 수 있다. 쉽게 말해, 지갑 소유자가 암호 지갑 모바일 어플에 키 또는 암호 구문 문자를 입력할 때 가로챌 수 있다는 것이다. 공격자는 일반적으로 다음 세 가지 방법 중 하나를 사용해 공격한다.
OSA(Over-the-Shoulder Attack): OSA는 사용자가 암호화폐 디지털 지갑에 암호 구문을 입력하는 것을 볼 수 있을 만큼 사용자와 물리적으로 가까이에 있는 공격자를 나타낸다.
키로깅 멀웨어(Keylogging malware): 여기서 멀웨어는 앱의 백그라운드에서 실행되어 모든 키 입력을 캡처해 공격자에게 보낸다. 스마트폰 루팅(Android) 및 탈옥(iOS)을 통해 키로깅을 훨씬 더 쉽게 수행할 수 있다.
오버레이 공격(Overlay Attack): 애플리케이션 화면 위에 눈으로는 보이지 않는 투명한 층을 하나 더 깔아서 사용자가 입력하는 정보가 애플리케이션으로 전달되는 게 아니라 그 투명 층을 통해 공격자에게 전달되도록 하는 수법이다.
이러한 위협을 방어하려면 앱이 키로깅, 오버레이 및 녹음을 감지해야 하므로 지갑 소유자에게 경고하거나 앱을 완전히 종료하여 직접적인 조치를 취할 수 있다.
모바일 지갑의 보안은 지갑이 실행되는 플랫폼의 무결성에 달려있다. 장치가 루팅 되었거나 탈옥된 경우 또는 해커가 Frida와 같은 개발 도구를 남용하는 경우에 클래이 언트 앱의 블록체인 주소에 액세스 할 수 있기 때문이다.
모바일 암호화폐 지갑 앱은 루팅 되거나 탈옥된 환경에서 작동할 때 그 사실을 알 수 있어야 사용자 보호를 위해 종료할 수 있다. 또한 앱의 중요 기능의 무결성을 손상시키는 데 사용될 수 있는 Magisk, Frida, 기타 동적 분석 및 계측 도구를 차단할 수 있어야 하며, 개발자는 앱의 코드 난독화를 통해 해커가 소스코드를 알아보기 어렵도록 해야 할 것이다.
대부분의 암호화폐 지갑은 거래소의 일부로 이용되고 있다. 어느 쪽이든 앱이 서버와 통신하거나 P2P 트랜잭션 중에 통신이 중간자 공격에 노출되게 된다.
중간자 공격은 공격자가 두 통신 시스템 사이를 불법적으로 엿듣고 있다가 세션 ID를 캡처하는 등의 방법으로 합법적인 리소스로 가장한 후 서버의 세션을 가로채는 공격이다. 대부분의 공격은 유선 네트워크나 와이파이를 통해 이뤄지나 가짜 기지국을 이용해 대량의 정보를 수집할 수도 있다.
전송 중인 데이터는 AES-256 암호화를 통해 보호되어야 하며, 모든 통신에 대해 SSL(Secure Socket Layer)/TLS(Transport Layer Security) 등의 암호화 프로토콜을 사용하는 것이 중간자 공격을 방지하는 최선의 방법이다.
해커들은 또한 암호화폐 지갑 애플리케이션의 수정된 버전을 만들어 낼 수 있다.
에뮬레이터는 현재 사용 중인 시스템 안에 다른 시스템을 완벽하게 재현해 실제 하드웨어를 사용할 필요 없이 애플리케이션을 테스트할 수 있는 환경을 만드는데, 해커들은 시뮬레이터와 에뮬레이터를 이용해 사기 계정을 만들어내고 부정 거래를 통해 암호화폐를 전송할 수도 있다는 것이다.
RASP(Runtime Application Self Protection) 방법, 변조 방지, 디버깅 방지 및 에뮬레이터 탐지 등은 이러한 종류의 공격을 막을 수 있는 핵심이 되겠다.
이처럼 암호화폐 등 디지털 자산을 노리는 공격은 블록체인 자체가 아닌, 연계된 외부 서비스를 공격하는 형태가 많다. 블록체인에 기록된 데이터를 직접 변조하는 것은 사실상 불가능하기 때문에 여기에 데이터를 전송하는 단계에 개입해 공격이 이뤄진다. 플랫폼을 노린 공격 외에도, 앞서 알아본 것과 같이 암호화폐 지갑 이용자를 타깃으로 정보유출 악성코드를 이용해 지갑 인증에 필요한 각종 정보를 손에 넣는 방식이다.
결국, 유출 피해를 막기 위해서는 사용자와 플랫폼 모두 주의를 기울여야 한다. 블록체인 자체는 안전할지 몰라도 이를 기반으로 하는 서비스의 접근성을 높이기 위해 도입한 각종 환경에서 보안 약점이 발생할 수 있기 때문이다.