Major Study./System hacking

시스템 보안 07.checksum값을 이용한 백도어 검출 문제

sosal 2010. 11. 22. 17:29
반응형
/*
 http://sosal.tistory.com/
 * made by so_Sal
 */


Solaris시스템에 해커가 침입하여 root 권한을 빼앗기는 보안사고가 발생하였다.
해커가 침입을 한 상태에서 설치한 백도어를 찾아내야 한다.
그런데 이번 해킹패턴을 보면 /usr/sbin/ 디렉토리 있는 네트웍서비스 프로그램중에
하나가 백도어로 바뀐것으로 강하게 의심된다.
다행히도 해킹사고가 발생하기 이전에  /backup/usr/sbin 이라는 디렉토리를 만들어서
원본파일들을 이미 복사해 놓았다. 원본파일과 비교하여 백도어 프로그램을 찾아내시오.
(찾아낸 후에 정답확인 프로그램을 실행하여 백도어 프로그램 파일명을 입력하시오).


cksum이라는 명령어를 살펴보겠습니다.


파일에 CRC 체크섬과 바이트 개수를 출력한다네요.

CRC checksum은 순환 중복검사라고도 불리며, 네트워크 등을 통해
데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식이라고 합니다.
어떤 값이 변했는가? 를 확인할 때 사용되는 방식인가봅니다.

/usr/sbin/ 풀더와, /backup/usr/sbin/의 파일들중,
checksum이 다른 파일들만 가져오면, 어떤 파일이 변질되었는지 쉽게 찾을 수 있겠습니다.

/usr/sbin 풀더에 있는 모든 파일들과
/backup/usr/sbin 풀더에 있는 모든 파일들의 chksum 결과를, /tmp에 저장하겠습니다.
cksum의 결과를 텍스트로 저장한다면, 더욱 비교하기 쉬우니까요.

# cksum /usr/sbin/* > /tmp/hacked
# cksum /backup/usr/sbin/* > /tmp/origin

각 파일들의 cksum들을 파일로 저장하였는데,
cksum 명령어를 실행하면서, 파일의 read권한이 없다면 오류를 내뱉습니다.
결국 오류는 신경쓰지 않아도 되는~ ^^

이제 diff 명령어로 두 파일을 비교하면 됩니다.
하지만, cksum은 파일의 절대경로를 출력하기 때문에,

1175318849    30928   /usr/sbin/usermod             //hacked
1175318849    30928   /backup/usr/sbin/usermod //origin

두 파일을 바로 비교할 수 없습니다.
origin에 있는 /backup 이라는 문자열을 모두 지울 수 있다면 좋겠네요.
vi 편집기에서 쉽게 바꿀 수 있습니다.



vi로 문자열 찾아 바꾸기
:% s/찾을 문자열/바꿀 문자열/g


/backup을 지우려면 (/는 특수문자이기 때문에 \/ 로 입력)
vi 편집기로 origin 파일을 실행한 후
:% s/\/backup//g

:wq 로 저장 후 종료

이제, diff로 두 파일을 비교하여, result라는 파일로 저장합니다.
diff ./origin ./hacked > result

result 파일에 잡다한 문자를 제거하면


이 속에 답이 있습니다.

수고하셨습니다.