뒤로

2026/11/11

내려받은 보안 도구가 바로 악성코드: 가짜 GitHub 저장소가 Windows PC 2,000대 이상 감염

Doctor Web이 빌드하면 악성코드가 실행되는 가짜 보안 도구를 GitHub에서 발견했습니다. 공격 방식과 클론한 코드를 빌드하기 전 점검할 사항을 정리합니다.

GitHub에서 네트워크 스캐너의 출력을 정리해 주는 작은 도우미 도구를 찾았다고 해 봅시다. README와 Visual Studio 프로젝트, 빌드 안내까지 갖춰져 있습니다. 저장소를 클론하고 빌드를 누릅니다. 겉보기에는 아무 문제가 없지만, 컴파일러가 시작될 즈음에는 숨겨진 명령이 이미 워크스테이션에서 실행된 상태입니다.

이것이 Doctor Web이 2026년 11월 5일에 공개한 함정입니다. 이 회사의 연구원들은 스캔 자동화, 보안 테스트, 로그 분석 도구로 위장한 GitHub 저장소를 발견했으며, 조사 시점 기준으로 감염된 Windows PC가 2,000대를 넘는 것으로 집계했습니다. 이 글에서는 함정의 작동 방식, 숙련된 엔지니어도 속는 이유, 그리고 방금 클론한 코드를 빌드하기 전에 확인해야 할 사항을 설명합니다.

핵심 요약

  • 이 저장소들은 보안 도구로 위장하며, 악성 명령은 빌드 중이나 스크립트를 시작할 때 실행되므로 별도의 프로그램을 실행할 필요가 없습니다.
  • 악성 코드는 Visual Studio 프로젝트 파일, .suo 파일, 그리고 Python과 Go 소스의 긴 공백 뒤에 숨어 있습니다.
  • 최종 페이로드는 AsyncRAT 백도어 두 개, 암호화폐 지갑 주소를 바꿔치기하는 클립보드 하이재커, 그리고 브라우저 데이터, VPN 및 FTP 설정, Discord 토큰을 빼가는 인포스틸러입니다.
  • 빌드하기 전에 빌드 파일을 읽고, 출처를 모르는 코드는 자격 증명이 전혀 없는 일회용 가상 머신에서 빌드하십시오.
  • 이미 이런 프로젝트를 빌드했다면 해당 워크스테이션이 침해된 것으로 간주하고, 깨끗한 기기에서 그 안에 있던 모든 자격 증명을 변경하십시오.

Doctor Web이 발견한 내용

Doctor Web의 보고서에 따르면 최초의 감염 저장소는 약 2년 전에 등장했습니다. 당시에는 암호화폐 지갑 사용자를 노렸고, 블록체인 게임, 게임 봇, 치트로 소개되었습니다. 공격자들은 이제 정보 보안 전문가로 표적을 바꾸었습니다. 가짜 저장소 중 하나에는 Fscan 네트워크 스캐너의 출력을 파싱하고 정리하고 서식을 맞추는 스크립트가 들어 있었습니다.

이것은 소프트웨어 취약점이 아니며 패치할 CVE도 없습니다. 공급망 공격과 사회공학을 결합한 캠페인입니다. 공격자는 쓸모 있어 보이는 프로젝트를 공개하고 누군가 빌드하기를 기다립니다. 이 연구를 요약한 BleepingComputer의 기사는 공백을 이용한 수법을 오래되었지만 여전히 효과적인 기법이라고 평가합니다.

함정의 작동 방식

Doctor Web은 세 종류의 파일에서 악성 코드를 발견했습니다. 모두 검토자가 보통 가장 먼저 여는 파일이 아닙니다.

숨는 위치일어나는 일놓치기 쉬운 이유
.csproj 프로젝트 파일PreBuildEvent가 프로젝트를 컴파일하기 전에 명령을 실행함검토자는 소스 코드를 읽고 프로젝트 파일은 읽지 않음
.suo 파일파일에 PowerShell 명령이 들어 있음Visual Studio가 보통 숨김 폴더에 보관하는 바이너리 설정 파일임
Python 및 Go 소스 파일악성 코드가 매우 많은 공백 문자 뒤에 숨어 있음오른쪽으로 한참 스크롤하거나 자동 줄 바꿈을 켜지 않으면 빈 줄처럼 보임

그다음 흐름은 동일합니다. PowerShell 스크립트(보고서는 예로 C:\Users\Public\Pictures\t.ps1과 L.ps1을 제시합니다)가 공격자의 서버나 YouTube, Telegram, Google Docs, GitCode, Pastebin 같은 정상 서비스에 암호화된 문자열을 요청합니다. 이 문자열을 복호화하면 압축 파일의 다운로드 링크가 나오며, 압축 파일은 C:\ProgramData\Windows.Microsoft.Photos에 풀립니다.

그 안에는 Microsoft.exe라는 Electron 기반 로더가 있으며, Doctor Web은 이를 Trojan.Loader.3261로 탐지합니다. 이 로더는 Telegram 봇을 통해 시스템 정보를 보고하고, 권한 상승을 시도하며, Windows Defender, 사용자 계정 컨트롤, 알림, 시스템 복원, 볼륨 섀도 복사본을 끕니다. 또한 ESET, McAfee, Malwarebytes 제품을 제거하려 하고, hosts 파일을 수정해 백신 업체의 도메인을 차단합니다.

눈에 띄지 않기 위해 로더는 기본 모드에서 explorer.exe가 자신의 부모 프로세스인 것처럼 보이게 하고, VerifiedAndReputablePolicyState 레지스트리 값을 바꿔 Smart App Control을 우회하며, ntdll.dll의 원래 코드를 복원해 보안 제품이 심어 둔 후크를 제거하고, 시스템 호출을 직접 수행하며, 이벤트 추적과 스크립트 검사에 쓰이는 Windows 함수를 패치합니다. 그런 다음 RegAsm.exe 같은 정상 Windows 프로세스에 페이로드를 주입합니다.

이어서 세 가지 페이로드가 실행됩니다.

  • AsyncRAT 백도어 두 개. 파일은 동일하지만 서로 다른 네트워크 포트를 사용하며, Doctor Web은 두 명의 운영자가 같은 기기를 동시에 제어하기 위한 것일 수 있다고 설명합니다.
  • 클리퍼. 클립보드의 암호화폐 지갑 주소를 바꿔치기하고, 스크린샷, 활성 창 제목, 사용자 로그인 이름, IP 주소를 Telegram 봇으로 보냅니다.
  • 인포스틸러(JS.Stealer.191). 샌드박스와 가상 머신 여부를 확인한 뒤 브라우저 데이터, FileZilla, MobaXterm, Total Commander 연결 파일, VPN 설정, 메신저 파일, 게임 계정 데이터, Discord 토큰을 수집해 Telegram 봇으로 전송합니다.

Doctor Web은 Windows 서비스를 설치하고 로더가 삭제되면 다시 내려받는, 아직 완성되지 않은 구성 요소도 발견했습니다. 공격자들이 이 도구 세트를 계속 개발하고 있음을 시사합니다.

전문가도 속는 이유

이 캠페인은 평소 좋은 습관으로 여겨지는 행동을 노려 설계되었습니다.

  • 소스에서 빌드하는 것이 내려받은 파일을 실행하는 것보다 안전하게 느껴집니다. 많은 엔지니어가 출처를 모르는 바이너리는 실행하지 않지만, 코드를 읽을 수 있다는 이유로 프로젝트 컴파일은 거리낌 없이 합니다. 이번 경우 읽은 코드는 깨끗하고, 명령은 빌드 구성 안에 있습니다.
  • “이 프로그램을 실행한다”는 순간이 없습니다. 명령이 평범한 빌드의 일부로 시작되므로, 모르는 프로그램을 실행하기 전에 늘 하던 잠깐의 망설임이 찾아오지 않습니다.
  • GitHub는 신뢰받는 공간입니다. 깔끔한 README와 설치 안내를 갖춘 저장소는 수천 개의 정직한 프로젝트와 다를 바 없어 보입니다. Doctor Web에 따르면 공격자들은 Visual Studio 설치 방법과 저장소 클론 방법에 대한 안내까지 제공했습니다.
  • 엔지니어의 워크스테이션에는 열쇠가 모여 있습니다. 저장된 브라우저 세션, VPN 프로필, 서버 연결 파일은 바로 인포스틸러가 수집하는 대상이며, 운영 시스템과 고객 환경으로 들어가는 길이 되는 경우가 많습니다.

빌드하기 전에 확인할 사항

아래 점검은 몇 분이면 끝나며, Windows, Linux, macOS 어디에서든 방금 클론한 모든 프로젝트에 적용할 수 있습니다. IDE에서 프로젝트를 열기 전에 저장소 폴더에서 실행하십시오.

# 1. Build hooks and command execution in project files
grep -rniE 'PreBuildEvent|PostBuildEvent|<Exec |powershell|cmd\.exe' \
  --include='*.csproj' --include='*.vbproj' --include='*.vcxproj' \
  --include='*.props' --include='*.targets' .
# 2. Visual Studio user-option files that should not be in a repository
find . -name '*.suo'
# 3. Files with very long runs of spaces or tabs on one line
grep -rlE '[[:space:]]{200,}' .

Unix 계열 셸이 없는 Windows에서는 PowerShell로 같은 공백 점검을 할 수 있습니다.

Get-ChildItem -Recurse -File |
  Select-String -Pattern '\s{200,}' -List |
  Select-Object -ExpandProperty Path

검색 결과가 나왔다고 해서 악성코드라는 증거는 아닙니다. 정직한 프로젝트도 빌드 이벤트를 많이 사용하고, 압축(minify)된 파일에는 긴 줄이 들어 있습니다. 무엇이든 실행되기 전에 해당 파일을 열어 명령이 무엇을 하는지 읽어 보라는 신호입니다.

  1. 빌드 파일을 먼저 읽으십시오. 프로젝트 파일, Makefile, setup.py, 패키지 설치 스크립트, CI 파일은 모두 명령을 실행할 수 있습니다. 소스만큼 꼼꼼히 읽으십시오.
  2. 저장소와 함께 딸려 온 .suo 파일과 .vs 폴더를 삭제하십시오. 사용자별 설정이며 프로젝트를 빌드하는 데 필요하지 않습니다.
  3. 낯선 코드를 검토할 때는 편집기에서 자동 줄 바꿈이나 공백 표시를 켜십시오.
  4. 저장소의 이력을 살펴보십시오. 새로 만든 계정, 큰 커밋 하나뿐인 이력, 실제 이슈나 기여자가 거의 없는 점, 잘 알려진 프로젝트와 기능이 겹치는 도구는 모두 더 주의해야 할 이유입니다. 스타와 포크 수는 조작할 수 있으므로 그것만으로는 거의 아무것도 증명하지 못합니다.
  5. 출처를 모르는 코드는 일회용 환경에서 빌드하십시오. 저장된 비밀번호, VPN 프로필, SSH 키가 없는 일회용 가상 머신이나 컨테이너를 사용하고, 사용 후에는 삭제하십시오.

팁: 도구를 시험해 볼 깨끗한 가상 머신 스냅샷을 하나 마련해 두십시오. 그곳에서 클론, 빌드, 테스트를 한 다음 스냅샷으로 되돌리면 됩니다. 쓸모 있는 도구로 판단되면 일상적으로 쓰는 워크스테이션에 들이기 전에 제대로 검토하십시오.

이미 빌드했다면

Doctor Web은 침해 지표(IoC) 목록에 파일 해시, 도메인, 주소, 저장소 이름 예시를 공개했습니다. 보고서에 설명된 징후는 다음과 같습니다.

  • C:\ProgramData\Windows.Microsoft.Photos 폴더 또는 Microsoft.exe라는 이름의 프로그램이 있음
  • C:\Users\Public\Pictures에 t.ps1 또는 L.ps1이 있음
  • 직접 추가하지 않은 regasm.exe 또는 dwm.exe에 대한 Windows Defender 예외가 있음
  • hosts 파일에 백신 업체 도메인이 있거나, 시스템 복원과 섀도 복사본이 꺼져 있음
  • 보안 소프트웨어가 사라졌거나 업데이트가 멈춤

이 중 하나라도 발견했거나 목록에 있는 프로젝트를 빌드한 사실을 알고 있다면, 그 컴퓨터에 있는 모든 것이 유출되었다고 보고 대응하십시오.

  1. 워크스테이션을 네트워크에서 분리하고 보안 팀에 알리십시오.
  2. 다른 깨끗한 기기에서 브라우저에 저장된 비밀번호를 변경하고 활성 세션에서 로그아웃하여, 탈취된 세션 쿠키가 더 이상 작동하지 않게 하십시오.
  3. VPN 프로필과 FTP 및 터미널 클라이언트에 저장된 비밀번호나 키를 교체하고, 이를 통해 접근할 수 있었던 서버를 점검하십시오.
  4. Discord를 비롯한 메신저 세션을 초기화하고, 암호화폐 자산은 깨끗한 기기에서 만든 지갑으로 옮기십시오.
  5. 운영체제는 정리하지 말고 다시 설치하십시오. 로더가 보안 및 복구 기능을 끄고 백도어 두 개를 설치하므로, 정리한 시스템은 신뢰하기 어렵습니다.

팁: 프로젝트를 빌드한 날짜 이후 영향을 받은 계정으로 로그인한 기록이 있는지 서버와 VPN 로그를 확인하십시오. 탈취된 연결 파일은 감염된 워크스테이션이 아니라 공격자의 시스템에서 사용됩니다.

LOGIQ가 도울 수 있는 부분

LOGIQ는 엔터프라이즈 Linux와 OpenJDK부터 이를 둘러싼 빌드 및 배포 파이프라인까지, 조직이 오픈소스 소프트웨어를 안전하게 운영할 수 있도록 돕습니다. 팀이 외부 코드를 환경에 들여오는 방식을 다른 시각에서 점검받고 싶거나, 빌드 시스템을 중요한 자격 증명과 분리하는 데 도움이 필요하다면 문의해 주십시오.