-
Memory - 귀사는 사이버 보안사건...$ 포렌식 $/$ 디지털 포렌식 with CTF $ 2020. 3. 17. 22:06
먼저 어떤 프로그램의 memory dump파일인지 확인해 봐야 하는데 imageinfo 로 나오지 않습니다.
제가 현재 보유중인 profile list는 아래와 같습니다.
거의다 Windows 관련 profile 입니다.
아마도 리눅스 관련 운영체제 의 메모리 덤프 일것으로 예상이 됩니다.
strings 명령어를 이용해서 어떤 운영체제의 문자열이 가장 많이 들어있는지 한번 확인해 보겠습니다.
debian 운영체제인 것을 알 수 있습니다.
debian 운영체제에는 버전이 존재하는데 버전마다 이름이 다 다릅니다.
위 사진 링크 : https://www.debian.org/releases/index.ko.html
hamm, slink, potato, woody, sarge, etch, lenny, squeeze, wheezy, jessie, stretch, buster 를 넣어서 한번 확인해 보겠습니다.
squeeze 는 Debian 6.0 입니다.
https://github.com/volatilityfoundation/profiles/tree/master/Linux/Debian/x64 에서 Debian608.zip을 다운받아보자
volatility/volatility/plugins/overlays/liunx 디렉터리에 옮겨서 넣어 줍니다. [import가 안되서 Windows로 넘어왔습니다.]
python2 vol.py --info 를 하면 아래와 같이 import 된것을 알 수 있습니다.
프로세스가 어떤 동작을 했는지 확인 하기 위해서 linux_psaux 플러그인을 이용해서 확인해 보겠습니다.
4300번 PID 프로세스의 행위를 보면 tmp 디렉터리를 만들고나서 payload.tar.gz을 다운받아서 압축을 해제하는 작업을 합니다.
그리고 base64인코딩된 값을 인자값으로 넘겨준뒤 실행을 하고 실행이 끝난뒤에는 사용했던 tmp 디렉터리를 삭제합니다.
매우 수상한 작업을 합니다.
그렇기 때문에 /tmp/ 디렉터리에 있던 payload.tar.gz을 찾아봐야 겠습니다.
Inode 값을 얻었기 때문에 추출해보겠습니다.
tar.gz 파일을 열어보면 앞서 봤던 paylad.run 파일이 있습니다.
위의 실행 파일을 가지고 ltrace명령을 이용해서 똑같은 인자를 주고 어떻게 값이 들어가는지 확인해 보겠습니다.
payloadrun.log를 보면 아래와 같이 109177 byte인것을 알 수 있습니다.
방대한 양의 데이터를 보면 ftp 서버를 이용한 흔적을 알 수가 있고, IP주소도 나와있습니다.
침투한 IP가 172.16.54.1인것을 알 수 있습니다.
일단 파라미터 값이 base64 encoding이 되어 있지만 decoding을 하면 평문이 출력되는 것이 아닌 암호화된 문자열을 출력합니다.
아래의 문자열은 base64 인코딩된 값을 디코딩한 값의 16진수 입니다.
위의 값들을 하나의 파일에 넣어 줍니다.
아래의 소스코드를 이용해서 IP주소와 위의 data 파일을 xor합니다.
결과는 아래와 같습니다.
위의 hex 문자열을 검색해보면 아래와 같습니다.
ftp 전까지를 복호화 키로 사용한다고 합니다.
이제 이키를 가지고 다시 복호화를 해보겠습니다.
결과를 확인해 보면 아래와 같습니다.
Flag : CAMP15_187db04a23016f4bfd957f89dbaa5691f529808de3c1edfc6fffe15602210e12
출처 : 디지털 포렌식 with CTF
'$ 포렌식 $ > $ 디지털 포렌식 with CTF $' 카테고리의 다른 글
Disk - 도와주십시오, 누군가… (0) 2020.04.08 Memory - GrrCON 2015 #28 (0) 2020.03.17 Memory - GrrCON 2015 #27 (0) 2020.03.17 Memory - GrrCON 2015 #26 (0) 2020.02.24 Memory - GrrCON 2015 #25 (0) 2020.02.24