리눅스 오픈소스 랜섬웨어(Ransomware) CryptoTrooper 분석 환경 구축
CryptoTrooper는 리눅스 기반의 오픈소스 랜섬웨어(Ransomware)입니다. 간단히 랜섬웨어 실습을 해보고 싶을 때 사용할 수 있습니다.
※ Victim 서버용 OS 구축하기 ※
가장 먼저 Guest OS를 구축합니다. 저는 Ubuntu 16.04 Server용 이미지를 이용해 Guest OS를 설치했습니다. 일단 Host OS에서 Guest에 손쉽게 접속할 수 있도록 Guest 입장에서 SSH를 설치합니다.
이제 Guest는 Network 설정을 진행합니다. 기본적으로 네트워크 어댑터를 NAT에 연결합니다. 또한 [Connect Network Adapter]에 정상적으로 체크되어 있는지 확인합니다. 이 과정에서 Guest의 아이피 주소를 확인하기 위해 ifconfig 명령어를 사용해 볼 필요가 있습니다. 결과적으로 다음과 같이 포트포워딩을 진행합니다. 간단히 웹 서버도 같이 개방하고자 합니다.
※ Guest OS에 필요한 라이브러리 설치하기 ※
Guest에서는 apache2 웹 서버와 MySQL을 설치합니다.
sudo apt-get install apache2 nginx-common mysql-server postgresql
이후에 MySQL에 접속하여 간단히 설치된 내용을 확인합니다.
mysql -u root -p
use mysql;
select host, user, authentication_string from user;
실행 결과는 다음과 같습니다.
이후에 간단히 하나의 테이블을 만들고 예시 데이터를 입력합니다.
CREATE TABLE CUSTOMER (
id int(10) NOT NULL,
name varchar(20) DEFAULT NULL,
PRIMARY KEY(id)
);
INSERT INTO CUSTOMER VALUES (1, 'Johnson');
SELECT * FROM CUSTOMER;
실행 결과는 다음과 같습니다.
※ Host에서 Guest OS의 웹 서버에 접속해보기 ※
포트포워딩을 통해 개방된 웹 서버에 접속해 볼 수 있습니다.
※ Guest OS에서 CryptoTrooper를 사용하기 ※
이제 Guest OS에서 CryptoTrooper를 사용해 랜섬웨어에 감염되어 봅시다. 먼저 전체 소스코드를 다운로드 받습니다. 그리고 소스코드가 존재하는 경로에 있는 모든 파일들을 루트 디렉토리(/)로 옮깁시다.
git clone https://github.com/jdsecurity/CryptoTrooper
cd /
sudo mv $CRYPTOTROOPER_SOURCE_DIRECTORY/* .
실행 결과는 다음과 같습니다.
이후에 랜섬웨어를 동작시키는 cipher.sh 스크립트를 실행합니다.
sudo /cipher.sh &
실행 결과는 다음과 같습니다. 기본적으로 접근 가능한 디렉토리에 있는 파일들을 모두 감염시킵니다.
※ Host에서 감염된 Guest OS의 웹 서버에 접속해보기 ※
웹 사이트에 접속하면 다음과 같이 랜섬 노트(Ransom Note)를 확인할 수 있습니다.
※ 감염된 Guest OS에서 복호화 해보기 ※
Guest OS에서는 whiteDecipher.sh 스크립트를 실행하여 암호된 파일들을 암호 해제해 볼 수 있습니다.
sudo ./whiteDecipher.sh
sudo /decipher.sh
실행 결과는 다음과 같습니다.
이어서 호스트가 다시 접속하면 다음과 같이 복호화 된 것을 확인할 수 있습니다.
※ Host에서 예시 웹 사이트 만들어 Guest로 옮기기 ※
커스텀 웹 사이트가 랜섬웨어에 감염된 것을 실습하는 방법입니다.
▶ index.html
<html>
<head>
<title>Demo Website</title>
</head>
<body>
<h2>Demo Website</h2>
<p>This is a demo website for demonstrating ransomware infection.</p>
<h3>
<a href="./link1.html">Link 1</a>
</h3>
<h3>
<a href="./link2.html">Link 2</a>
</h3>
</body>
</html>
▶ link1.html
<html>
<head>
<title>Demo Website</title>
</head>
<body>
<h2>Link 1</h2>
<p>This is link 1.</p>
</body>
</html>
▶ link2.html
<html>
<head>
<title>Demo Website</title>
</head>
<body>
<h2>Link 2</h2>
<p>This is link 2.</p>
</body>
</html>
이제 Host OS에서 Guest OS로 파일을 옮깁시다. Host OS 입장에서는 127.0.0.1:5678이 Guest 의 주소가 됩니다. 결과적으로 Guest의 /home/dongbin/web 이라는 경로에 파일들을 옮기는 것입니다.
sudo scp -r -P 5678 /home/dongbin/Downloads/demo/ dongbin@127.0.0.1:/home/dongbin/web
실행 결과는 다음과 같습니다.
만약에 SSH 접속을 많이 해서 Host Identification이 변경되었다는 내용이 출력되는 경우 /root/.ssh/known_hosts에 작성된 내용을 제거할 수 있도록 합니다.
sudo rm /root/.ssh/known_hosts
결과적으로 Guest는 다음과 같이 웹 파일을 받게 됩니다.
이후에 전달 받은 경로인 /home/dongbin/web을 Apache의 루트 디렉토리로 설정합니다.
sudo nano /etc/apache2/apache2.conf
대략 다음과 같은 형태로 작성된 부분이 있습니다.
<Directory /var/www/>
...
</Directory>
이걸 자신의 경로로 바꿉니다.
<Directory /home/dongbin/web/>
...
</Directory>
예를 들어 다음과 같이 작성됩니다.
이어서 sites-available 경로에 있는 default.conf 파일도 변경합니다.
sudo nano /etc/apache2/sites-available/000-default.conf
여기에 적혀 있는 DocumentRoot의 경로를 마찬가지로 변경해 주겠습니다.
DocumentRoot /home/dongbin/web/
다음과 같이 변경됩니다.
이제 웹 서버를 재부팅합니다.
sudo service apache2 restart
이어서 다시 호스트 입장에서 접속하면 다음과 같습니다.
참고로 만약 호스트에서 접속했을 때 403 Forbidden 오류가 나온다면, 다음과 같이 루트 디렉토리에 있는 파일들에 대하여 권한을 변경합니다.
cd /home/dongbin/web/
sudo chmod o+x ~
이어서 Guest OS에서 다시 CryptoTrooper를 받아서 랜섬웨어 감염을 진행합시다.
cd /home/dongbin
sudo rm -rf CryptoTrooper
git clone https://github.com/jdsecurity/CryptoTrooper
cd /
sudo mv $CRYPTOTROOPER_SOURCE_DIRECTORY/* .
sudo /cipher.sh &
실행 결과는 다음과 같습니다.
그러면 각종 웹 파일들의 확장자가 .enc로 변경되며 암호화됩니다.
마찬가지로 다시 복호화를 진행하면 정상적으로 호스트에서 파일을 확인할 수 있습니다.
'기타' 카테고리의 다른 글
킬디스크(Killdisk) 랜섬웨어 분석 환경 구축 (2) | 2020.11.15 |
---|---|
Ubuntu 16.04 호스트(Host) PC에 Oracle VM VirtualBox를 설치하여 Ubuntu 16.04 게스트(Guest) 설치하기 (0) | 2020.11.15 |
Raspberry Pi Zero W를 이용한 Serial 통신 파일 전송(File Transfer) 속도 분석 (0) | 2020.11.15 |
Raspberry Pi Zero W를 이용해 2개의 USB Configuration을 재부팅마다 교체하기 (0) | 2020.11.15 |
무료 파일 공유 서비스: 미디어파이어(MediaFire) 사용 방법 (0) | 2020.11.15 |