[보안] 리눅스 서버 암호화폐 채굴 악성코드 (xmrig) 대처 & 보안 관리 기초

Willow·2022년 10월 31일
0

SERVER/SYSTEM

목록 보기
4/7

집에서 외부접속 가능한 서버를 통해 프록시 접속하려고 했는데 서버가 응답을 하지 않았다. 나중에 알고 보니, 유추하기 쉬운 ssh 계정을 사용하는 학내 서버들에 공격시도가 성공하여 학교 측에서 긴급하게 인터넷 차단을 진행한 것. 그리고 ssh 계정이 탈취된 것으로 확인된 IP 주소에 우리 연구실 IP 도 포함돼 있었다...

서버들을 낱낱이 훑어본 결과 학외접속이 가능한, 이번에 공격당한 IP에는 정작 별다른 악성코드가 심어지지 않았지만 이 서버를 통해 해커가 다른 서버들로 접속한 후 악성코드를 심은 것으로 보인다. 아래는 그 사진.

xmrig 라고 cpu를 채굴하는 악성코드라고 한다. cpu 사용량이 빽빽하게도 채워져 있다. 하필 또 내가 실험을 돌리고 있던 서버에서 알차게 메모리를 쓰고 있었다. 어쩐지 학습 로그에서 10 epoch 쯤부터 시간이 2배 이상으로 늘어나더라니...^^ 연구실 분들이 잘 안 쓰는 서버라 마침 작은 실험을 돌리고 있었던 게 불행 중 다행인 걸지도 모르겠다. 아무튼 여름의 서버침수에 이어 가을의 악성코드.. 잠잠할 날이 없다.

그동안 보안을 너무 소홀히 한 것 같아 반성을 많이 했다. 생각해보면 협업연구가 많지 않고 보안이 철저한 회사보다는 학교/연구기관이 공격하기 훨씬 쉬울 텐데 너무 안일하게 생각했던 것 같다. 그리하여 이번 기회에 학교 측에서 보내주신 조치 가이드라인 및 구글링을 참고해 보안 관리 기초를 정리해본다.

1. 계정 관리 & 비밀번호 관리 & 통신 외부 주소 확인

  1. 계정 확인
    /bin/bash 쉘이 부여된 계정 중, 장기 미접속으로 관리가 안 되는 졸업생 분들의 계정을 삭제한다. 한편 /bin/false, /bin/nologin은 로그인이 필요없는 시스템 계정인데, 이 계정들을 통해 접속하는 경우도 있으니 필요없을 경우 지우는 것도 한 방법.

  2. root, su 관리
    /etc/ssh/sshd_config 파일에서 PermitRootLogin 설정을 no 로 바꿔준다. 또, /etc/group (or passwd)에서 그룹명이 root 과 겹치지 않는지, 즉 0은 아닌지 더블체크 해준다.

    뒤이어 아무나 su 할 수 없도록 그룹을 따로 만들고 su 권한을 관리계정으로 한정하는 것도 한 방법. 그러나 이번 경우에 악용된 계정이 일반계정이 아니라 관리계정이었기 때문에, 바꿔도 크게 의미는 없을 것이라 판단하여 개인적으로 하지는 않았다.

  3. home directory 관리
    원활한 협업을 위해, adduser 로 만들어지는 새 계정의 홈 디렉토리 권한은 디폴트로 755라고 한다. 그러나 이 경우 악성코드가 개인 폴더까지 침투할 수 있기 때문에 700으로 하는 것이 보안 상으로는 깔끔. 우리 연구실 역시 협업 할 때 개인 홈을 서로 보는 분들이 있는 것 같아 설정을 바꾸지는 않았다.

  4. 비밀번호의 최소길이, 최소/최대 유지날짜, 접속 실패 시 제한 설정

마지막에 sudo service ssh restart 하는 것 잊지 말기!

  1. 통신하는 외부 주소 확인
netstat -anpt

3. 악성 프로세스 및 파일 삭제 & 미확인 예약작업 삭제

  1. 우선 악성코드 및 현재 실행되는 작업 중단

이번에 확인된 악성 코드는 xmrig, xinetd, /usr/bin/disk1이라고 한다. 검색해보니 xmrig는 악성 채굴 코드, xinetd는 panchan으로 보인다.

xmrig, xinted에 대한 설명: https://www.itworld.co.kr/news/240479

이 악성코드들이 주로 설치되는 경로는 다음과 같다:

  • /usr/local/games/*
  • /usr/bin/disk1
  • /usr/bin/dpkg-driver
  • /usr/bin/expect_timed
  • /home/계정/.난수/xinetd
  • /root/.난수/xinetd

우리 연구실의 경우, xmrig 파일만 심어져 있었는데 사진에는 없지만 /usr/local/games/.cache에 숨겨져 있었다. 우선은 이를 강제로 삭제해준다. (rm -rf) 두 번쨰로, 첫 사진에 올린 것처럼 xmrig 악성 코드의 parent id가 159003이므로 이를 kill 해준다. (수업시간과 연구실을 오가면서 실행하여 터미널 창이 다 다르다^^;)

  1. 그 후 연구실원이 예약해놓은 것으로 보이지 않는, 의심파일이 있을 경우 삭제
cd /var/spool/cron/crontabs/
ls -al

3. 백신 설치

우리 연구실의 경우 학교에서 지원되는 V3 백신을 설치하였다. 이 부분은 각 백신 프로그램의 설치 안내를 따르면 된다.

4. 총평

이번 경험으로 보안에 대해서 얕게나마 공부해보았다. 악성코드들이 관리계정으로 설치된 것으로 보아, 서버가 뚫린 가장 큰 요인은 관리계정의 쉬운 비밀번호 때문이 아니었을까 싶다. 1234, qwerty 정도는 아니지만 어쨌든 정말 매우 쉬웠고, 비밀번호 오류 횟수 제한도 없었으니 딕셔너리 어택을 당하지 않았을까 싶다. 이번에 간단하게나마 조치를 취하고 백신도 설치했으니 이런 일이 두 번은 없기를 바랄 뿐이다.

profile
Speech Processing/AI/Linguistics/CS/etc.

1개의 댓글

comment-user-thumbnail
2023년 12월 3일

/var/tmp/xmrig 경로에도 심어져 있는 케이스가 있었습니다.

답글 달기