CTF-D/Disk

[Disk] 이벤트 예약 웹사이트를 운영하고...

Ron Weasley 2022. 3. 7. 16:33

이 문제는 3개로 분할되어 있기 때문에, 다 작성을 하겠습니다.

 

문제들을 먼저 보겠습니다.

#A : 공격자가 웹 페이지 소스코드를 유출한 시간 (UTC+09:00)은?

#B : 리버스 쉘(Reverse Shell)을 동작시키는 프로세스 ID(Process ID)는? (10진수)

#C : 리버스 쉘(Reverse Shell)에 대한 공격자 주소(IP)는?

 

문제 파일을 다운 받아서 FTK로 열어보니 다음과 같은 폴더들이 있었습니다.

해당 폴더에 들어있는 파일들을 간략하게 보겠습니다.

accounts :

group(사용자의 그룹목록)

history(사용자가 입력했었던 명령어)

lastlog(마지막 접근했던 사용자 정보)

last_R(로그인 상태)

passwd(리눅스 계정 정보를 담은 파일)

shadow(계정 패스워드가 암호화된 파일)

w(현재 사용자)

 

file

fls_r_m

mactime_b

 

network

arp(네트워크 정보에서 변조가 없음을 확인하는 파일)

lsof(프로세스에 대한 네트워크 정보 추적)

netstat_an(열려있는 포트를 알려줌)

 

osinfo

date, df_k, hostname, ifconfig_a, localtime, timezone, uname_a

 

process

crontab(특정 시각에 명령이나 프로그램이 수행되도록 하는 작업 스케줄러)

ipcs_u

lsmod

pstree_a(프로세스를 트리형태로 보여주는 파일)

ps_eaf(프로세스 정보 로그)

 

weblog

access.log (로그 기록)

 

이렇게 볼 수 있는데요, 일단은 리눅스 시스템이니까 공격자가 어떤 명령어를 실행했는지 보기 위해서 [accounts] -> [history]에 파일을 살펴보겠습니다.

살펴보면, 의심스러운 명령어를 볼 수 있는데, chmod 777이라는 명령어입니다.

리눅스에서 chmod 명령어는 권한을 준다는 명령어이며, 777은 모든계정에게 읽기, 쓰기, 실행권한을 준다는 말입니다.

리눅스 파일을 보면 -rwxrwxrwx가 있는데, r = 4, w = 2, x = 1로 777입니다.

 

해석을 하면 /var/www/upload/editor/image파일의 권한을 모든 계정에게 읽기, 쓰기, 실행 권한을 주겠다. 이말입니다.

그럼 권한을 줬다. 즉, 이 파일을 가지고 악용을 하겠다고 추측을 할 수 있으며, 이 명령어와 파일을 가지고 프로세스 분석을 해보겠습니다.

 

process폴더에서 모든 계정에서의 프로세스의 정보들을 로그로 보여주는 ps_eaf파일을 찾아가서 로그를 보면 많은 양의 로그들을 볼 수있는데, 아까 우리가 봤던 history에서 /var/www/upload/editor/image 명령어를 검색을 해봅시다.

history에서 봤던 명령어와 관련된 프로세스가 2개가 나왔습니다.

 

위의 5244프로세스는 쉘 명령어 옵션이고 5245프로세스 아이디는 php 명령어를 실행하는 명령어 프로세스임을 알 수 있습니다. 이제 네트워크 폴더에서 프로세스에 대한 네트워크 정보 추적을 해야 하니까 lsof 파일로 가서 프로세스 아이디를 검색해봅시다.

이렇게 제일 앞에 php를 보아 php 명령을 통해 reverse.php 파일을 수행하는 것으로 추측할 수 있었습니다.

그리고 TCP 192.168.184.162:52634 -> 144.206.162.21:ww (ESTABLISHED)를 보아 TCP연결을 통해서 144.206.162.21 IP로 목적지가 설정되어 있음을 알 수 있습니다.

 

이제 weblog폴더에서 access.log를 통해서 로그 기록을 보겠습니다. 저는 export해서 메모장으로 보겠습니다.

아까 찾았던 /upload/editor/image/를 검색하면 cmd= 라는 명령어를 통해 인코딩된 문자들을 3개 볼 수 있습니다.

대소문자와 숫자로 되어있는 것으로 보아 base64로 인코딩 되어 있을거 같아서 base64로 디코딩을 해보겠습니다.

1. ls -al  /var/www/upload/editor/image/

2. tar -cvf /var/www/upload/editor/image/1330664838 /var/www/

3. php -f /var/www/upload/editor/image/reverse.php

 

이것을 토대로 본다면 마지막에 인코딩된 cGhwlC1......HA가 php 명령어를 실행하는 명령어입니다.

그럼 이제 플래그 값을 구해보겠습니다.

 

#A : 공격자가 웹 페이지 소스코드를 유출한 시간 (UTC+09:00)은?

( 2012-08-25_17:26:40 )

#B : 리버스 쉘(Reverse Shell)을 동작시키는 프로세스 ID(Process ID)는? (10진수)

( 5245 )

#C : 리버스 쉘(Reverse Shell)에 대한 공격자 주소(IP)는?

( 144.206.162.21 )