원저자:원저자:코사인
, SlowMist 기술의 설립자
DNS Hijacking(하이재킹)은 모든 사람에게 친숙해야 합니다.역사상 MyEtherWallet, PancakeSwap, SpiritSwap, KLAYswap, Convex Finance 등은 물론 오늘날의 CurveFinance에서도 12개 이상의 잘 알려진 암호화폐 프로젝트를 접했습니다. 하지만 많은 분들이 하이재킹의 근본 원인을 반드시 모르실 수 있으며, 더 중요한 것은 (프로젝트 당사자와 사용자의 관점에서) 방어하는 방법에 대해 여기서 간략하게 공유해드리겠습니다.
Domain -> IP_REAL
DNS를 사용하면 대상 도메인 이름에 액세스할 때 해당 IP를 찾을 수 있습니다.
Domain ->이 포인팅 관계가 공격자에 의해 교체되는 경우:
IP_BAD(공격자가 제어)
그런 다음 공격자는 IP_BAD가 있는 서버에서 응답 내용을 위조할 수 있습니다. 궁극적으로 사용자에게는 브라우저의 대상 도메인 아래에 있는 모든 것이 문제가 될 수 있습니다.
DNS 하이재킹은 실제로 몇 가지 가능성으로 나뉩니다.예를 들어, 두 가지 일반적인 유형이 있습니다.
도메인 이름 콘솔이 해킹되면 공격자는 DNS A 레코드를 임의로 수정하거나(공격자가 제어하는 IP_BAD에 IP를 가리킴) 공격자가 제어하는 DNS 서버에 대한 네임 서버를 직접 수정할 수 있습니다.
네트워크에서 중간자 가로채기(man-in-the-middle hijacking)를 수행하고 대상 도메인 이름이 IP_BAD를 가리키도록 강제합니다.
하이재킹의 첫 번째 지점은 자동으로 수행될 수 있습니다. 즉, 이때 공격자가 다른 합법적인 HTTPS 인증서를 발급할 수 있기 때문에 사용자의 브라우저 측에 보안 프롬프트가 표시되지 않습니다.
포인트 2의 하이재킹은 도메인 이름이 HTTPS를 채택하는 경우 자동으로 하이재킹될 수 없으며 HTTPS 인증서 오류 메시지가 표시되지만 대상 도메인 이름이 HSTS 보안 메커니즘으로 구성되지 않는 한 사용자는 강제로 계속 액세스할 수 있습니다.
강조: Crypto/Web3 프로젝트의 도메인 이름이 HTTPS(HTTP에 계속 액세스할 수 있음을 의미)를 적용하지 않고 HTTPS가 HSTS(HTTP Strict Transport Security)를 강제로 활성화하지 않는 경우 포인트 2의 하이재킹 시나리오에 대해 매우 위험합니다. 모두 눈을 뜨고 경계하십시오.
프로젝트 측의 경우 도메인 이름에 대한 HTTPS + HSTS의 전체 구성 외에도 다음 보안 검사를 일상적으로 수행할 수 있습니다.
도메인 이름과 관련된 DNS 레코드(A 및 NS)가 정상인지 확인합니다.
브라우저에서 도메인 이름의 인증서 표시가 직접 구성되었는지 확인하십시오.
관련 도메인 이름 관리 플랫폼이 2단계 인증을 활성화했는지 확인합니다.
웹 서비스 요청 로그 및 관련 로그가 정상인지 확인합니다.
유저 입장에서는 여러 가지 방어 포인트가 있는데 하나씩 설명드리겠습니다.
http://example[.]com
키 도메인 이름의 경우 다음과 같은 HTTP 형식으로 절대 액세스하지 마십시오.
https://example[.]com
대신 항상 HTTPS 형식이어야 합니다.
HTTPS 형식인 경우 브라우저에 HTTPS 인증서 오류가 있으면 계속 진행하지 마십시오. 이는 자동이 아닌 DNS 하이재킹 공격을 방지합니다.
DNS 하이재킹이든, 프로젝트 서버 해킹이든, 내부 악, 공급망 공격으로 인해 프로젝트 프런트 엔드 코드가 오염되는 등 자동 하이재킹 상황에 대해 실제로 사용자 관점에서 최종 표현은 똑같다. 사용자의 자산이 도난당할 때까지 브라우저 측에는 이상이 없습니다.
그렇다면 이 경우 사용자는 어떻게 방어할 수 있을까요?
작업의 모든 단계(특히 지갑에 서명하고 확인해야 하는 순간)에 경계를 유지하는 것 외에도 사용자는 경계해야 합니다.
Web2 시대에 매우 잘 알려진 브라우저 보안 확장 프로그램을 추천합니다: @noscript (트위터는 오랫동안 업데이트되지 않았지만 공식 웹 사이트가 업데이트되었고 확장 프로그램도 업데이트됨) @ma1님의 작품입니다.
NoScript는 기본적으로 포함된 JavaScript 파일을 차단합니다.
하지만 노스크립트는 임계점에 조금 익숙해지고 가끔 귀찮을 수도 있는데 중요한 도메인네임 접근은 노스크립트가 설치된 브라우저(예: 파이어폭스)와 다른 브라우저(예: 크롬)에서 할 수 있도록 하는 것이 좋습니다.
격리된 상태에서 작동하는 것이 좋은 보안 관행입니다. 번거롭다고 느낄 수 있는 많은 것들이 운전하고 익숙해지면 모든 것이 잘 될 것입니다.
https://curve[.]fi/js/app.ca2e5d81.js
그러나 이것은 완벽한 방어가 아닙니다.(완벽한 방어는 없었습니다.) 예를 들어 이 @CurveFinance 공격에서 공격자는 IP_BAD를 가리키도록 DNS A 레코드를 변경한 다음 프런트 엔드 페이지를 오염시켰습니다.
코인 도용과 관련된 악성코드가 심어져 있다.
이전에 NoScript로 Curve를 신뢰했다면 이번에도 속을 수 있습니다.
원본 링크