본문 바로가기

Games/CTF

PHDays 2014 FreeBDSM

문제로 가상머신 이미지가 주어지고 포트 12345 번을 개방한 숨겨진 프로세스가 있다고 한다. 루트킷 포렌직 문제인것 같다. 팀원 형님의 도움을 받아서 가상머신 이미지를 VMWare 로 돌리고 root 로그인까지 금방 성공했다. 문제는 FreeBDSM 이지만 확인해보면 Ubuntu 12.04 이다. 문제에서 말한 12345 번 포트에 접속해보면 어떤 서비스가 돌고있긴 한데, netstat 으로 확인해보면 12345 번 포트가 개방된 사실이 없다. 이는 즉 /proc/net/tcp 가 루트킷에 의해 후킹되었다는 의미이다.

문제 상황에 따르면 루트킷이 숨겨주고있는 데몬 프로세스를 찾아서 분석하고 Passport: 라는곳에 올바른 입력을 해줘야 하는것 같은데 기본적인 방법들로는 루트킷에 의해 숨겨진 프로세스를 찾을수가 없었다. 팀원형님께서 unhide 라는 툴을 알려주셔서 돌려보니 443번 PID 가 숨겨진 프로세스인것이라고 리포팅되었다. /proc 에 확인해보면 443 엔트리가 존재하지 않는다.

아마도 /proc 디렉토리에 대한 vfs_readdir 를 후킹해서 숨긴것이라 판단하고 간단하게 task_struct 를 순회하면서 comm 과 pid 를 찍는 디바이스 드라이버를 짜서 올렸다. 그랬더니 예상대로 443번 프로세스가 발견되었다.

443번의 PID 로서 phd_service_enc 라는 프로세스가 존재하는데 아마 분명히 파일시스템상의 바이너리또한 VFS 후킹방식으로 숨겨지고 있을것이다. 여기서 방향은 2가지가 있다고 판단했다.

1. 프로세스 메모리덤프를 통해서 코드를 분석

2. 루트킷의 VFS 후킹을 복원시키고 프로세스 바이너리를 획득

아마 프로세스가 단지 메모리덤프만 보거나 코드조각만을 분석해서는 알기 어렵게 되어있지 않을까 싶어서 당연히 2번 방향으로 가야겠다고 판단했으나 일단 그전에 간단히 VMWare 스냅샷을 통해서 전체 메모리 덤프를 확인해봤다. 숨겨진 데몬에 접속해서 문자열을 한번 넘겨준뒤에 바로 스냅샷을 떠서 메모리덤프를 확인해봤다.  일단 자세한 분석을 하기에 앞서 프로세스 관련 메모리의 대략적인 형태만 좀 보기위해서 메모리상의 프로세스 관련부분을 찾아낸 프로세스 이름과 출력문자열등으로 메모리스캔해봤는데 어이없게도 그냥 flag 가 평문으로 박혀있었다 -_-;;

정작 루트킷 후킹을 복원할 필요도 없이 허무하게 풀렸다 -_-; 풀이시간은 대략 2시간정도로 4000점 치고는 쉬웠던거같다.


'Games > CTF' 카테고리의 다른 글

Olympic CTF 2014 Echof writeup  (1) 2014.02.10
PHDays 2014 miXer  (0) 2014.01.27
Whitehat RSA Signing  (0) 2014.01.07
HDCON2013 final cft2  (10) 2013.10.31
Whitehat Contest - Pybox  (5) 2013.09.23