본문 바로가기

D.S/ML&DL

GPU 하이재킹 #1 - 딥러닝 관련 패키지 설치시 특히 주의할 것

728x90

 

 

내가 당한 GPU 하이재킹 기록이다.

 

평소처럼 pip 로 딥려닝 관련 패키지를 설치하고 코딩을 하고 있었다. 보통 커맨드 창을 띄워놓고 gpu 사용량을 계속 모니터링하는데 어느 순간부터 이상한 위치에서 GPU를 절반이나 차지하고 있다.

 

처음에는 주피터에서 계속 여러 작업을 하고 놔두니 내 프로그램의 뭔가이겠구나 싶었는데, 커널을 다 내리고, 주피터 랩 자체를 셧다운했는데도 계속 남아있는 것이었다. 이상해서 프로세스 돌아가는 디렉토리로 가보니..웬걸;; 나도 모르는 T-Rex 채굴 프로그램이 돌고있네? -_-;

 

 

 

이더스캔 들어가니까 아주 그냥 많이 해드셨네.

도둑노무시키 지갑내역: https://etherscan.io/address

 

 

 

폴더에 남아있던 trex 코드와 로그;;

 

 

 

아니 이런게 대체 언제 깔린거지??? 싶어서 기억을 더듬어보았는데, pip로 tf 관련 패키지를 설치하고 나서였던 것 같다. pip로 패키지를 설치하고 바로 실행된 건 아니고 모델 객체를 만들고 작업을 하는 와중에 갑자기 실행되었음. 하이재킹 프로그램이 설치된 곳도 컨테이너 안이었으니...

 

다행히 프로그램을 도커로 돌리기 때문에 전체 시스템에는 영향이 없었고 GPU 회수도 빠르게 할 수 있었다.

 

로그를 뒤져보니 하이재킹은 여러 번 일어났다. 정확하게 알아차린 건 29일 하이재킹이 일어났을 때였다. 그 전은 왜 안 내려가지 하면서 (인지는 못 하고) 도커 재시작.

 

컨테이너 내부 기록
 컨테이너 /root/.profile 에 입력되어있었음

 

그 이후로 한 곳에서 pip 설치 기록을 남기고 지켜보고 있었는데 12/2일에 또 한번 또 하이재킹이 일어났다. 이번엔 transformer 패키지를 설치하고 나서였다. 패키지를 설치하고 나서 바로 하이재킹이 일어나지 않고 모델을 사용하면서 일어났다.

 

컨테이너의 history를 살펴보니 하이재킹한 도둑놈이 치밀하지는 않았는지 기록이 남아있었다.

하이재킹에 필요한 스크립트들을 특정 서버에서 다운받아서 설치한다.

 

tiktok...-_-;;; 정말 tiktok이랑 연관되어있는 걸까 아님 서버명을 저리 지은걸까;;;

trex, c3pool 이 설치되어있었음. 설치 위치는 공격자 지정인 듯 하고 주로 그 하위에 .test/python 가 GPU를 점유하고 있다.

 

관련 스크립트 내용으로 구글링을 해보니..중국 웨이보정보국?이란 곳에 도둑채굴을 위한 스크립트가 떡하니 올라와있다...허허허 끝엔 중국인가...-_- 밑의 스크린샷은 중국어 번역을 한 것..

 

history 지우는거 보면 딱 도둑채굴용이네. 거지같은 놈들.

 

history 내역에 저 커멘드들이 남아있어서 쉘스크립을 쓰면 저렇게 남지 않을텐데?라는 의문 때문에 다른 경로로 들어올 수도 있을까 싶었지만 들어올 구석이 없는데..

 

왜 history에 저게 남았지? 주피터에서 magic 커맨드 !로 pip 설치해서 그런걸까? 이거 이유는 아직 못 찾았다..; 주피터 터미널에서는 계정 쉘을 막아놔도 쉘을 쓸 수 있는거 같은데, 이런거랑 관련이 있는걸까? 좀 더 알아봐야할 듯..

 

긍정적으로 생각하면

덕분에 우분투 보안쪽도 자세히 보게 되는 계기가 되었고, 도둠놈이 하게 두느니 내가 시간나면 채굴하는 걸로 생각을 바꿨다. -_-;; 전기세가 얼마가 나올진 모르겠으나..;;

 

 

PiPY를 통한 GPU 하이재킹 관련 문서

 

pip install gpu hijeck 이라고 구글링을 좀 더 해보니 관련 문서가 있다.

공격방법에 대해서는

typosquatting 공격, 비교적 유명한 패키지 이름을 잘못 쳤을 때 설치되게끔 하는 공격,

setup.py 실행시에 기술되어 있는 의존 패키지를 통해 공격하는 방법이 있는 듯 하다.

 

Typosquatting and Combosquatting Attacks on the Python Ecosystem

[링크 ]

fake 패키지와 오리지널 패키지 이름 비교:

 

 


최근 기사들.. 몇 개를 추려보았다.

 

1-1. Sonatype Catches New PyPI Cryptomining Malware

(2021/6/21) [링크 ]

 

Malicious PyPI packages hijack dev devices to mine cryptocurrency

(2021/6/22) [링크 ]

 

1-2. Ahoy, there’s malice in your repos—PyPI is the latest to be abused

(2021/6/23) [링크 ]

 

1-3. Snakes in the grass! Malicious code slithers into Python PyPI repository:

(2018/10/30)[링크 ]

아...2018년도 기사; 이런 종류의 멀웨어가 원래 있었는데 요즘 암호화폐쪽이 트렌드로 올라오면서 또 극성인가 봄;;

 

728x90

2. "PyPI에 악성코드가 올라온다" 악성 파이썬 라이브러리를 주의하라

(2019/12/13) [링크 ]

 

원래 pypi 통해서 악성코드가 많이 올라왔구나.. 별 생각없이 설치한 나 반성한다;

 

 


 

 

악성코드 얘기가 나와서 적어보는데, 위의 마이닝 멀웨어를 찾다가 어떤 멀웨어는 설치되면 클립보드를 계속 감시하고 있다가 암호화폐 지갑 주소나 관련 내역을 가져가는 것도 있나보다. ㄷㄷㄷ

 

 

밑의 글은 클립보드로 지갑주소 복사하면 공격자 주소로 바꿔서 트랜잭션하게 만드는 코드를 설명하고 있다..와 진짜 무섭데잉;

 

Bitcoin Clipper malware made in Python

(2021/8/7) [링크]

 


본인이 설치한 PIP 패키지들

컨테이너 안이라 별 걱정없이 root로 주피터 랩을 실행하고, pip 설치했음.

코딩 기록을 보면 25일자부터 NLP 작업들을 하면서 패키지들을 설치했고, 채굴 로그도 25일부터 나왔으니 pip로 설치된 거라면 다음 패키지 어딘가에서 이런 멀웨어가 들어왔을 가능성이..있지않을까 -_-;;

아닐 수도 있지만 일단 기록해본다.

의존패키지가 이미 모두 설치된 경우도 있었고...

21/11/23 ?
# !pip install soynlp
# !pip install customized_konlpy
# !pip install tweepy==3.10.0
# !pip install gensim
# !pip install kss
# !pip install regex
# !pip install customized_konlpy


# !pip install glove_python_binary
# !pip install -U tensorflow-text==2.6

21/12/01
# !pip install sentencepiece

21/12/02
# !pip install transformers

 

암호화폐 관련 멀웨어 예방은..

 

회사야 보안팀이 있을거니까 좀 나을 거고, 개인용 피씨 사용시에...

내가 생각하기에

1. 일단, 코딩할 때와 일상 OS를 완전히 분리하는 것..

코딩하면서 멀웨어가 설치될 수도 있고 만약 일상 OS와 분리 안 되어 있으면 지갑 털리는 건 일도 아닐 듯..;;;(보통 지갑 주소 얻는데 손으로 타자치는 사람 있나요.. ㅠㅠ) 가상환경이든 버추얼박스든 도커든 뭐든 이용해서..

그리고 어떤 서버에서 무엇을할지 정했으면 그 용도로만 사용할 것.

 

2. 프로그램도 컨테이너로 분리해서 관리할 것..

시스템에 설치하는 것보다 관리가 정말 편함. 멀웨어 대응도 더 빨라질 수 있고..다른 프로그램에도 영향을 최소화할 수 있다고 봄..

 

3. 설치할 때든 뭐든 로그 남기기...

그래야 이런 일이 일어났을 때 원인을 찾을 수 있으니까. 여러 원인을 만들 수 있는 여지를 없애야 한다. 설치도 한 곳에서 로그가 남도록 설치하고. 특히 GPU를 사용하는 패키지들(딥러닝, TF, TORCH 사용하는 패키지들) 설치할 때는 언제 어디서 어떻게 설치했는지 알 수 있게 해두는 게 좋을 듯 하다.

 

4. 계정 관리

리눅스에서 작업하고 있다면 컨테이너에서도 root작업은 안 하는 게 좋을 듯 하다. 컨테이너 안이라서 안심했는데 안심할게 아니었어.. 

 

 

읽으신 분들 중에 또 예방방법 있으면 공유 부탁드립니다. 감사합니다.

 

 

 

 

반응형