매일 업데이트
2022-10-23 05:33 10 min

바이러스 백신 API 서비스를 통해 바이러스를 검사하는 방법

웹사이트 보안 취약점 스캔 및 API 활용

웹은 악성 코드로 가득 차 있으며, 안타깝게도 이러한 위협은 고객 및 협력사 웹사이트에서도 발생할 수 있습니다.

오늘날 기업 운영에 있어 고객 또는 협력사 웹사이트와 관련된 정보 교류는 필수적입니다. 이러한 서비스는 사업 운영에 필수적이지만, 때로는 보안 위협의 원인이 될 수 있습니다. 외부 웹사이트와의 상호작용 과정에서 악성 콘텐츠가 유입될 수 있으며, 이는 의도적으로 설치되었거나 제3자에 의해 변조된 것일 수 있습니다. 이러한 악성 콘텐츠가 지정된 위치로 이동할 경우 심각한 문제를 야기할 수 있습니다.

웹사이트에서 악성 페이지를 수동으로 검사하는 것은 현실적으로 어려울까요?

유능한 개발자라면 웹페이지의 취약점을 찾아낼 수 있어야 한다고 생각할 수 있습니다. 그러나 현실은 여러 가지 이유로 인해 이상과 거리가 멉니다.

  • 개발자는 보안 전문가가 아니며, 그들의 전문성은 복잡한 소프트웨어 개발에 있습니다. 따라서 보안 취약점 탐지에 대한 전문 지식이 부족합니다.
  • 뛰어난 개발자가 있다고 해도, 업무량이 너무 많을 것입니다. 일반적인 웹 페이지에는 수천 줄의 코드가 포함되어 있으며, 이 모든 코드를 분석하여 취약점을 파악하는 것은 불가능에 가깝습니다. 이는 마치 코끼리 한 마리를 통째로 먹으라는 것과 같습니다!
  • 웹사이트는 페이지 로딩 속도를 높이기 위해 CSS 및 JavaScript 파일을 압축하고 축소하는 경우가 많습니다. 이로 인해 코드는 더욱 복잡하고 읽기 어렵게 변합니다.

이 코드가 무슨 역할을 하는지 쉽게 알 수 있나요? (출처: elgg.org)

만약 이 코드가 여전히 읽을 만하다고 느껴진다면, 이는 변수 이름을 맥락에 맞게 유지하기로 한 개발자의 덕분입니다. 누군가 jQuery 소스 코드를 자신의 웹사이트에 호스팅하고 변조한다고 상상해보십시오(이 복잡한 코드 어딘가에 두 줄 정도만 변경해도 문제가 발생할 수 있습니다).

위의 코드는 5,000줄에 가까운 코드입니다. 😎

이것은 단일 스크립트일 뿐입니다. 일반적으로 웹 페이지에는 5~15개의 스크립트가 포함되어 있으며, 많은 경우 10~20개의 웹 페이지를 동시에 작업해야 할 수도 있습니다. 매일 이 작업을 반복해야 한다고 상상해보십시오. 또는 하루에 여러 번씩!

다행히 API를 활용하면 URL을 빠르고 쉽게 스캔할 수 있습니다. 웹 페이지뿐만 아니라 다운로드용으로 제공된 파일도 스캔할 수 있습니다. 이제 이러한 작업을 지원하는 몇 가지 API 도구를 살펴보겠습니다. API를 사용하면 개발자가 이러한 API를 활용하여 웹사이트 스캐너 도구를 더 효율적으로 개발할 수 있습니다. 😀

Google 웹 위험

웹 페이지 검사기가 인터넷 전체를 관리하는 회사에서 나온 것은 그리 놀라운 일이 아닙니다. 하지만 Google 웹 위험은 아직 베타 버전이며 요청을 통해서만 사용할 수 있습니다. 베타 버전이라는 점은 주요 변경 사항이 발생할 수 있음을 의미합니다.

하지만 API가 매우 간단하므로 개발자는 API 모니터링 도구를 사용하여 변경 사항에 빠르게 대처할 수 있습니다. 🙂

API 사용법도 매우 간단합니다. 명령줄을 사용하여 단일 페이지를 확인하려면 다음과 같은 요청을 보내면 됩니다.

    curl -H "Content-Type: application/json" "https://webrisk.googleapis.com/v1beta1/uris:search?key=YOUR_API_KEY&threatTypes=MALWARE&uri=http%3A%2F%2Ftestsafebrowsing.appspot.com%2Fs%2Fmalware.html"
  

요청이 성공하면 API는 페이지의 취약점 유형을 반환합니다.

  {
    "threat": {
      "threatTypes": [
        "MALWARE"
      ],
      "expireTime": "2019-07-17T15:01:23.045123456Z"
    }
  }
  

위의 응답에서 API는 해당 페이지에 악성 코드가 포함되어 있는 것으로 알려져 있음을 확인합니다.

Google Web Risk API는 선택한 URL이나 파일에 대한 실시간 진단을 수행하는 대신, Google에서 관리하는 블랙리스트를 참조하여 URL이 해당 목록에 포함되어 있는지 여부를 확인하고 결과를 제공합니다. 즉, API가 URL이 안전하다고 응답하면 비교적 안전하다고 가정할 수 있지만, 완벽하게 안전함을 보장하지는 않습니다.

VirusTotal

VirusTotal은 URL뿐만 아니라 개별 파일도 스캔할 수 있는 또 다른 유용한 서비스입니다. (이러한 측면에서 Google Web Risk보다 더 유용합니다.) 서비스를 직접 사용해보고 싶다면, 웹사이트 홈페이지에서 바로 스캔을 시작할 수 있습니다.

VirusTotal은 활발한 커뮤니티에서 구축하고 관리하는 무료 플랫폼으로 사용할 수 있지만, 유료 API 버전도 제공합니다. 유료 서비스를 선택해야 하는 이유는 다음과 같습니다.

  • 유연한 요청 속도 및 일일 할당량 (공개 API는 분당 4개 요청으로 제한됨)
  • 제출된 리소스는 VirusTotal에서 여러 백신 엔진을 사용하여 분석하고 자세한 진단 정보 제공
  • 제출된 파일에 대한 행동 기반 정보 제공 (파일은 의심스러운 활동을 모니터링하기 위해 격리된 환경에서 실행됨)
  • 다양한 매개변수를 사용하여 VirusTotal 파일 데이터베이스 쿼리 가능 (복잡한 쿼리 지원)
  • 엄격한 SLA 및 빠른 응답 시간 제공 (공개 API를 통해 VirusTotal에 제출된 파일은 대기열에 추가되어 분석 시간이 오래 걸릴 수 있음)

개인적으로 VirusTotal API를 사용하는 것은 기업용 SaaS 제품에 대한 매우 현명한 투자 중 하나가 될 수 있습니다.

Scanii

보안 스캐너 API에 대한 또 다른 추천 서비스는 Scanii입니다. Scanii는 제출된 문서나 파일에 대한 위협을 스캔할 수 있는 간단한 REST API를 제공합니다. 쉽게 실행하고 확장할 수 있는 주문형 바이러스 스캐너라고 생각하면 됩니다!

Scanii의 주요 이점은 다음과 같습니다.

  • 악성코드, 피싱 스크립트, 스팸 콘텐츠, NSFW(Not Safe For Work) 콘텐츠 등 다양한 위협 감지
  • Amazon S3 기반으로 구축되어 쉬운 확장 및 안전한 파일 저장 가능
  • 23개 이상의 언어로 작성된 유해하거나 안전하지 않은 콘텐츠, 잠재적으로 위험한 텍스트 감지
  • API 기반 파일 스캔에 집중된 단순하고 명확한 접근 방식 (불필요한 기능 없음)

Scanii의 가장 큰 장점은 메타 엔진이라는 점입니다. 즉, Scanii는 자체적으로 스캔을 수행하는 것이 아니라 여러 기본 엔진을 활용하여 스캔을 처리합니다. 특정 보안 엔진에 종속되지 않으므로 API 변경 등에 대한 걱정 없이 유연하게 사용할 수 있습니다.

Scanii는 사용자 생성 콘텐츠에 의존하는 플랫폼에 특히 유용하며, 신뢰할 수 없는 협력업체에서 생성된 파일을 스캔하는 데도 효과적입니다.

MetaDefender

일부 조직의 경우 단일 엔드포인트에서 파일 및 웹 페이지를 스캔하는 것만으로는 충분하지 않습니다. 복잡한 정보 흐름을 가지고 있어 모든 엔드포인트가 안전해야 합니다. 이러한 경우에 MetaDefender가 이상적인 솔루션입니다.

MetaDefender는 핵심 데이터 자산과 네트워크 사이에 위치한 방어 게이트키퍼 역할을 합니다. MetaDefender의 설계 철학은 모든 파일이 감염되었을 수 있다고 가정하고 안전하고 효율적인 프로세스를 통해 콘텐츠를 재구성하는 것에 있습니다.

MetaDefender의 몇 가지 주요 기능은 다음과 같습니다.

  • 데이터 유출 방지: 파일 내용에서 감지된 민감한 정보를 보호하는 기능. 예를 들어, 신용카드 번호가 포함된 PDF 영수증은 MetaDefender에 의해 가려집니다.
  • 로컬 또는 클라우드 환경에 배포 가능
  • 30가지 이상의 압축 형식(zip, tar, rar 등) 및 4,500가지 이상의 파일 형식 스푸핑 트릭 탐지
  • 다양한 배포 채널 지원: 파일 보호뿐만 아니라 이메일, 네트워크 및 로그인 제어 등을 통해 보안 유지
  • 사용자 정의 규칙을 기반으로 다양한 스캔 파이프라인을 적용하는 사용자 정의 워크플로

MetaDefender는 30개 이상의 엔진을 포함하고 있지만, 이러한 복잡한 엔진을 추상화하여 사용자가 신경 쓰지 않고 사용할 수 있도록 합니다. 따라서 보안에 대한 우려가 큰 중대형 기업에 적합한 선택입니다.

Urlscan.io

주로 웹 페이지를 다루고, 웹 페이지가 실제로 어떤 역할을 하는지에 대한 더 자세한 정보를 얻고 싶다면 Urlscan.io가 훌륭한 도구가 될 수 있습니다.

Urlscan.io는 다양한 정보를 제공합니다. 주요 정보는 다음과 같습니다.

  • 페이지에서 접속한 총 IP 주소 수
  • 페이지에서 정보를 전송한 지역 및 도메인 목록
  • 사이트의 프런트엔드 및 백엔드에서 사용되는 기술(정확성을 보장할 수 없지만, 상당히 정확함)
  • 도메인 및 SSL 인증서 정보
  • 요청 페이로드, 서버 이름, 응답 시간 등을 포함한 자세한 HTTP 상호 작용
  • 숨겨진 리디렉션 및 실패한 요청
  • 나가는 링크
  • JavaScript 분석 (스크립트에서 사용되는 전역 변수 등)
  • DOM 트리 분석, 양식 콘텐츠 등

분석 결과는 다음과 같은 형태로 제공됩니다.

API를 사용하면 URL을 제출하여 스캔을 진행하거나 다른 사용자가 스캔한 기록을 확인할 수 있습니다. 전반적으로 Urlscan.io는 관련 비즈니스나 개인에게 유용한 정보를 제공합니다.

Sucuri

Sucuri는 웹사이트 위협 및 악성코드 스캔 분야에서 잘 알려진 플랫폼입니다. 잘 알려지지 않은 사실은 Sucuri도 REST API를 제공하여 동일한 기능을 프로그래밍 방식으로 사용할 수 있다는 점입니다.

API는 단순하고 효율적입니다. 물론 Sucuri는 스캐닝 API에만 국한되지 않으므로, 서비스 이용 중에 서버 측 스캐닝과 같은 강력한 기능을 활용하는 것이 좋습니다. (FTP 자격 증명을 제공하면 서버에 로그인하여 모든 파일에 위협이 있는지 검사합니다.)

Quttera

이 목록의 마지막 항목은 Quttera입니다. Quttera는 요청 시 도메인과 제출된 페이지를 스캔하는 것 외에도 지속적인 모니터링을 통해 제로데이 취약점을 예방할 수 있습니다.

REST API는 간단하고 강력하며, JSON 외에도 XML 및 YAML과 같은 여러 가지 형식으로 응답을 반환할 수 있습니다. 완전한 멀티스레딩 및 동시성이 스캔에서 지원되므로 여러 개의 철저한 스캔을 병렬로 실행할 수 있습니다. 실시간으로 작동하므로 서비스 다운타임이 치명적인 미션 크리티컬 제품을 제공하는 회사에 매우 중요합니다.

결론

이 기사에서 다룬 보안 도구는 추가적인 방어 수단 역할을 합니다. 바이러스 백신 프로그램과 마찬가지로 많은 것을 할 수 있지만, 완벽한 오류 방지 검사 방법을 제공할 수는 없습니다. 악의적인 목적으로 작성된 프로그램은 시스템 리소스를 사용하고 네트워크 요청을 수행하는 점에서 정상적인 프로그램과 동일하게 작동하기 때문입니다. 악성 프로그램의 악의적인 동작은 시스템이 정상적으로 작동하지 않는 상황에서 발생합니다.

그렇지만 이러한 API는 외부 웹사이트와 자체 웹사이트에 대한 강력한 보안 방어 수단을 제공하여 전반적인 보안 수준을 향상시킵니다. 🙂

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.