티스토리 뷰

보안

리눅스 시스템 프로파일링

I Tea 2016. 11. 28. 19:20

[개요]

디스크 포렌식 복제에 대한 철저한 조사보다는 

동작 중인 시스템의 '사고 초기'단계에서 수집된 휘발성 자료는

통신 중인 원격 서버를 포함한 귀중한 단서를 제공한다.


감염된 시스템에서 내리는 명령은 멀웨어에서 변조가 가능하여 신뢰하기 어렵다.휘발성 자료를 수집하려면 표적 운영체제의 간섭을 최소로 줄이는 유틸리티 툴킷을 사용할 필요가 있다.

이렇게 신뢰할 만한 이진 파일을 사용하는 관례는 모든 현장 조사의 핵심이며, 신뢰하는 도구로 루트킷이 숨겨 놓은 정보를 밝힐 수 있다.


※ 하지만, 컬널 동적 적재 모듈 LKM(Loadable Kernel Module) 루트킷이 관련될 때 정적으로 컴파일 된 이진 파일도 효과가 없다.


[휘발성 자료 수집 방법]

대다수의 유닉스 시스템에서 각 명령의 출력뿐 아니라 실행 중인 명령을 기록할 수 있는 도구인 script가 있다. 이 명령은 디지털 포렌식의 초석인 문서화 기능을 제공한다.

script -f 의 -f 옵션은 강제 기록을 위한 옵션이다. 실행 중에 장애가 발생하면 정보가 유실 될 수 있기 때문이다.

script는 메모리에 자료를 캐시하고  종료될 때만 캐시에 기록해둔 정보를 모두 파일로 쓴다. 그렇기 때문이다.

script는 현재 위치에 자료를 저장한다.

1. 신뢰하는 명령 shell을 실행(정적으로 컴파일된 바이너리를 저장하고 있는)

2. script -f 실행(키 입력 로그 시작)

3. 시스템 날짜,시간 문서로 남긴다. 믿을 만한 실제 시각과 비교.

4. dd를 사용해 메모리 전체 내용 캡쳐

5. hostname, IP address, OS info 수집

 - hostname: hostname, echo $HOSTNAME, env | grep HOSTNAME, set | grep ^HOSTNAME, cat /proc/sys/kernel/hostname

 - ip address: ifconfig -a, ip addr | grep "inet "

 - OS info: /etc/*-release, /etc/issue*, rpm (레드햇계열), uname, /proc/version (레드햇 계열)

6. 네트워크 스니퍼 실행 여부, 시스템 상태, 환경 변수 세부 내역 수집

7. who 또는 w (시스템 로그인한 사용자들)

8. netstat를 사용 네트워크 활동 파악

9.  ps -aux | grep 악성 프로세스 (사용중인 프로세스 분석)

10. lsof | grep 22 (프로세스가 어떤 파일과 소켓에 접근 중인지 파악)

11. 메모리에 올라온 모듈과 드라이버 확인

12. 연결된 호스트 이름 확인

13. 커맨드라인 히스토리 확인

14. 마운트된 공유 리소스 확인

15. 권한없는 계정, 그룹, 공유, 여타 시스템 리소스와 구성 점검

16. 예약작업 파악

17. exit (script를 종료하여 키 입력 로그를 끝낸다.


Tip. 서비스가 연결되지만 netstat -an 확인 시 보이지 않으면 루트킷 정보를 숨겨 시스템의 보안에 문제가 생겼을지도 모른는 상태인 것이다.


Tip. 동작 중인 시스템에서 파일 목록을 얻어 오는 동작이 유용할지도 모르지만, 이 과정은 마지막으로 접근한 날짜를 갱신하므로, 시스템에서 벌어진 사건을 다시 복원하는 과정에서 중요한 정보의 근원을 없애버린다.



[1]휘발성 자료 수집 방법

 1. 리눅스용 사고 대응 도구 스위트

   - 어디서 얻지? 검색해도 나오지 않는다.


2. 전체 메모리 덤프

# /mnt/trustedtools/dcfl dd if=/deb/mem > /mnt/evidence/host.physicalmem


Tip. 위 방식은 일부 유닉스 시스템에서 일관성 없는 결과나 잘못된 정보를 내놓는다

# /mnt/trustedtools/memdump > /mnt/evidenc/host.memdump


Tip. /mnt  -> /media 와 비슷한 용도. 탈부탁 가능한 장치들에 대하여 일시적인 마운트포인트로 사용하는 디렉토리.


Tip. /dev  ->시스템 디바이스 파일 저장

./dev/sda ->하드디스크 장치파일

./dev/cdrom ->CD-ROM 장치 파일


Tip. /proc/kcore -> 물리적인 메모리의 모든 자료가 ELF 형식으로 저장

★★★★★★★ ->시스템에서 사용중인 메모리의 실제 이미지★★★★★★★★

/proc/meminfo


# /mnt/trustedtools/dcfl dd if=/proc/kcore of=/mnt/evidencd/host.kcore


 3. 프로세스 메모리 보존

리눅스에서 실행 중인 프로세스별 메모리 내용은 TCT의 pcat을 사용해 프로세스 중단없이 캡처할 수 있다.

#pcat [-H  빈공간 유지],[-m 맵핑 파일],[-v 프로세스 ID]

# /mnt/helix/Static-Binaries/linux_x86/pcat -v 165 > /mnt/evidence/xntps.pcat


Tip. TCT(The Coroner's Toolkit)의 grave-robber)

# /mnt/trustedtools/grave-robber - p -d  /mnt/evidence


Tip. evidecd 는 증거,흔적이네~~ 괜히 쫄았어!!!



 4. 표적 시스템 세부 내역 수집

물리 메모리 이미지를 얻은 후 실시간 대응 조사 과정에서 처음과 마지막에 수집해둬야 하는 항목은 시각과 날짜다.

이 정보는 조사 과정의 문서화뿐만 아니라 조사 타임라인의 기초를 제공한다.

# /mnt/trustedtools/date

Wed Feb 20 17:34:13 EST 2008


# /mnt/trustedtools/hostname

victim13.corpX.com


# /mnt/trustedtools/ifconfig -a

뿅뿅


Tip. ifconfig 결과에 'PROMISC'는 스니퍼가 네트워크 카드를 무차별 모드로 전환했음을 나타낸다.

Tip. 스니퍼가 실행중이면 스니퍼 기록의 위치를 찾아내기 위해 lsof 출력 결과 사용


# /mnt/trustedtools/cat /proc/version

Linux version 2.4.18-14


# /mnt/trustedtools/uptime


Tip.  /proc/cpuinfo    -> CPU 상세정보

Tip.  /proc/cmdline    -> 커널부팅할 때 사용한 환경 변수


 5. 시스템에 로그인했던 사용자 파악

# who

# w


 6. 네트워크 연결과 활동 파악

 7. 프로세스 정보 수집

 8. /proc 디렉터리에 위치한 휘발성 자료

 9. 연린 파일과 의존성

 10. 메모리에 올라온 모듈 조사

 11. 명령 히스토리 수집

 12. 마운트된 공유 드라이브 알아내기

 13. 예약 작업 파악

[2] 동작 중인 리눅스 시스템에서 비휘발성 자료 수집

 1. 동작 중인 리눅스 시스템에서 포렌식용 저장 매체 복제

 2. 동작 중인 리눅스 시스템에서 포렌식용 관련 자료 보존

 3. 보안 구성 평가

 4. 신뢰하는 호스트 사이에 맺어진 관계 평가

 5. 로그인과 시스템 로그 수집

'보안' 카테고리의 다른 글

보안 용어 정리  (0) 2019.05.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함