JFrog 연구진이 "파이썬의 공식 패키지 저장소인 PyPI(Python Package Index)에서 악성 파이썬 패키지 11개를 발견했다"고 밝혔다. 해당 악성 파이썬 패키지는 이미 41,000회 이상이나 일괄 다운로드된 것으로 알려졌다.

악성 패키지가 온라인 패키지 저장소에서 발견된 것은 이번이 처음이 아니다. 2018년에는 PyPI에서 데이터를 탈취하거나 비트코인 지갑 주소를 바꿔치기해 암호화폐를 가로채는 악성 라이브러리 12개가 발견됐다. 2019년에는 PyPI에서 악성코드가 들어 있는 2개의 파이썬 라이브러리가 제거됐다.
연구원들은 "공격자들이 탐지되지 않기 위해 점점 더 진보된 악성 패키지 기술을 사용하고 있다"면서 우려를 표시했다.
악성 패키지는 불협화음 토큰을 훔치고, 공격자가 감염된 컴퓨터를 완전히 제어할 수 있도록 HTTP를 통해 역방향 셸을 설정하거나, DNS 터널링하여 서버 실행으로 전송하는 등의 활동을 한다.
이러한 악성 파이썬 패키지 중 일부가 네트워크 기반 탐지를 회피하기 위해 사용하는 또 다른 기법은 패스트리 컨텐츠 전송 네트워크(CDN)를 사용하여 C2 서버와의 통신을 pypi.org과의 통신으로 위장하는 것이다.
JFrog 연구원의 설명에 따르면, PyPI 인프라는 Fastly CDN에서 호스팅되고, 이 호스팅은 Varnish 투명 HTTP 프록시를 사용하여 클라이언트와 백엔드 간의 통신을 캐시한다. 트래픽은 먼저 암호 해독을 위해 TLS 터미네이터로 들어가므로 바니쉬 프록시는 HTTP 패킷의 내용을 검사할 수 있고, 프록시는 사용자의 요청에서 HTTP 헤더를 분석한 후 Host 헤더에 따라 해당 백엔드로 요청을 리디렉션한다.
그런 다음 프로세스가 역방향으로 반복되어 악성코드가 PyPI와의 이중 통신을 모방할 수 있게 된다. 이에 따라 명령어&제어(C2) 세션이 암호화돼 합법적인 서버 인증서로 서명되면서 합법적인 PyPI 자원과 통신할 수 없게 되는 방식이다.
공격자들은 또한 TrevorC2 프레임워크를 사용하여 마스킹된 명령과 제어 클라이언트를 구현하고 있다. JFrog 측은 "이 프레임워크를 사용하여 클라이언트는 표준 웹 사이트 검색과 유사한 방식으로 서버에 접속해 트래픽을 더욱 모호하게 만든다"고 말했다.
이어 "이러한 악성 패키지들은 이전에 발견된 '테스'를 갖지 않았을 수도 있으며, 무엇보다 훨씬 정교해졌다는 점이 특징이다"면서 "일부는 고도로 압축된 탑재물을 가동하는 대신 초기 정찰 후 후속 공격을 할 수도 있다" 라고 말했다.
언제나 그렇듯이 개발자들은 공공 저장소에서 패키지를 다운로드할 때 각별히 주의해야 한다.
[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]