반응형
내 시스템이 crack을 당했는데 어떠한 패키지가 crack을 당해
있을지 알기 위해서 간단하게 rpm을 사용하여 조사를 하는
방법을 알고자 한다.

보통 Redhat 계열에서는 rpm이라는 pacakge 관리자를 사용하게
된다. 이 rpm 명령에서 -V라는 옵션을 사용하여 crack이 되어
진 것으로 예상을 할수 있는 파일및 package들을 찾을수가 있다.

일단 -V를 간단하게 설명을 하자면 초기에 설치했던 rpm package의
정보들과 현재의 상태를 비교하여 변화가 있으면 출력을 하는
것이 기본 골자이다. 즉 변화가 없다면 출력되는 것이 없다는
것이다. 하지만 이렇게만 적어 놓는다면 아니 여기 까지만 읽고선
해 본다면 황당한 경험을 많이 하게 될것이다. 즉 변형된 파일이
너무 많으며, 그렇다면 그 호스트는 과연 crack을 당했느냐에 대한
판단이 제대로 서지 않을 것이니 아래의 man page에서 인용한
부분의 해석을 제대로 읽고선 판단을 하기 바란다.

주의 할것은 rpm -V check는 root의 권한으로 하는 것을 원칙으로
한다. 다른 user의 권한으로 할 경우 SUID가 걸린 파일이 있으면
md5 check 부분에서 "?"로 출력이 되는 경우가 많다.

-- rpm manpage의 -V option 부분 시작 --

실행 명령 예제> rpm -V [대조모드] package_name

rpm database에 저장돠어 있는 원 package의 정보들을 이용하여
현재 설치가 되어 있는 package들에 어떠한 변화가 있었는지를
비교를 한다. 여러가지 정보들, 즉 file 크기, MD5 sum, 권한,
타입, 소유권, 그룹 소유권 등을 비교하게 되며 어떠한 변화가
있을 경우 출력을 하게 된다.

pacakge로 부터 설치되지 않은 파일들은, 예들들어 --excludedocs
option을 사용하여 설치시에 포함한 문서 파일들은 무시되어
진다.

Option들은 아래와 같은 대조 mode를 사용할수가 있다.

--nofiles
Ignores missing files when verifying.
대조시에 원 정보에서 삭제된 파일들은 무시한다.

--nomd5
대조시에 MD5 checksum error는 무시한다.

--nopgp
대조시에 PHP check error를 무시한다.

-V option을 사용하였을때의 출력물은 8글자의 문자열을 출력하고
다음 "c"가 나오면 설정 파일임을 뜻하며 다음 파일이름을 차례로
한줄로 출력을 하게 된다. 처음의 각 8글자들은 RPM database와 각
특성을 비교한 결과를 출 력하게 된다. 하나의 "."는 test에서
아무 이상이 없다는 것을 출력을 하게 된다. 다음에 따라오는 문자
들은 어떠 한 test에서 이상을 발견했다는 것을 의미한다.

출력 결과 예제 : S.5....T c /etc/pam.d/passwd

위는 passwd package를 검사했을 경우 나온 예제이다. 이를 가지고
간단히 설명을 하자면 제일 처음의 S는 file size가 변경되었다는
것을 의미하며 두번째의 "."은 어떠한 검사이기는 한데 변형된 것이
없다는 것을 의미한다. T는 생성시간이 변경이 되었다는 것을 의미
한다. 다음 두번째 field의 c는 /etc/pam.d/passwd 이 설정 파일임을
나타낸다.

즉 c가 있다면 출력에 대해서 그리 신중하게 생각을 하지 않아도
무관 하다. 하지만 내가 설정을 한지 아주 오래되었는데 근래에 변경이
되어 있다면 그건 의심의 여지가 전혀 없지는 않을 것이다.

실제로 -V 명령에서 주의 깊게 볼것은 출력물이 config file이나 아니면
Binary file이냐이다. 설정 파일은 시스템이 건드릴 수도 있지만 binary는
절대 변화가 있으면 안되기 때문이다. 즉 이 binary file이 출력이
된다면 그건 어떠한 변화가 있었다는 것은 즉 crack을 당했다고 판단의
근거가 충분히 가능하기 때문이다.

5      MD5 sum
S      File size
L      Symlink
T      Mtime
D      Device
U      User
G      Group
M      Mode (퍼미션과 file type을 포함한다)

-- rpm manpage의 -V option 부분 끝 --

,