Check Vulnerability/System

시스템취약점점검

D4tai1 2019. 4. 26.

1. 시스템 취약점점검

▶ 보통 취약점진단 대상의 대부분은 웹이나 모바일이다.

▶ 또한 시스템취약점진단이나 어플리케이션 취약점진단을 가끔 하는구나.. 정도만 알고 있었다.

▶ 필자는 학생이지만 갑작스럽게 의뢰를 받게되어 보안담당자의 동행 하에 시스템 취약점진단을 실시하게 되었다.

 

(1) 의뢰

 [1] 비밀의뢰

  ▶ 진단한다는 것 자체도 비밀로 붙인 상태로 진단하게 되었다.

  ▶ 비밀리에 진단한다는 것에 대해 제약이 생각보다 많다.( [3] 참고)

  ▶ 기업의 서버개발자 및 담당자가 갑작스럽게 퇴사를 하게되어, 내부 시스템에 루트킷이나 백도어 유무에 대한 점검을 의뢰받았다.

  ▶ 필자는 진단하는 사람이기 때문에 이유가 궁금하긴 하지만 궁금해하지 않았다.

 

※ 정보보호개론

+ 인적보안과 관련된 내용 중 퇴직할 때 입사 시 작성한 채용합의서, 비밀유지서약(NDA), 이해충돌각서 등의 보안문서에 입각하여 문제가 있다면 퇴사 시 퇴사직원에게 책임을 물을 수 있다.

+ 위 이론을 직접 보게될 줄은 몰랐지만.. 

 

 [2] 사전 제공된 정보

  ▶ 진단 서버의 OS는 Windows Server 2008 이다.

  ▶ 수 만명의 개인정보가 저장되어 있다.

  ▶ 토폴리지도 사전에 확인하였다.

  ▶ 복합서버로 구성되어 있다.

   + 네이버로 예를 들면 블로그, 카페, 메일, 뉴스, 만화 등등 여러 개가 복합적으로 있다.

 

 [3] 제한사항

  ▶ 비밀리에 진단을 하기 때문에 인터넷 접속기록을 남기거나 프로그램 실행한 흔적 등을 포함해서 내부 서버에는 아무 것도 설치할 수 없다.

  ▶ 실제로 서비스를 제공하고 있는 서버이기 때문에 부하를 줄 수 없다.

  ▶ 비밀리에 진단하기 때문에 서버 앞에서 작업할 수 있는 시간이 극히 제한적이다.

  + 이 말은 모든 내용은 파일로 저장 후 가지고 나와서 추후 분석을 하거나, 이미지로 캡쳐를 해서 가지고 나와서 진행해야 한다.

  + 서버에 USB를 연결 후 파일을 옮기려고 하지만 레지스트리에 USB에 대한 정보 및 시간 로그가 남으므로 이 기록은 삭제한다.

 

 [4] 진단준비

  ▶ 학생이기 때문에 유료진단툴은 사용할 수 없고 수작업이 대부분이다.

  ▶ 실제로 시스템 취약점진단이 처음이기 때문에 개인적으로 Windows Server 2008을 설치한 후 진단해 보았다.

 

(2) 진단

▶ 진단방법은 크게 9가지로 나누어 보았다. 

▶ 진단항목에 따라 방법 및 절차를 상세히 정리 후 전산실 내의 서버 앞에서 목록에 따라 진단하려고 한다. 

 [1] 루트킷 및 백도어 진단

  ▶ USB연결

  ▶ GMER 2.2 실행[GMER는 관리자권한보다 높은 커널권한, 즉 운영체제 권한으로 실행하고 확인가능]

  ▶ 루트킷/멀웨어 탭 클릭

  ▶ 스캔

  ▶ 내보내기

  ▶ 결과 중 붉은색으로 출력되는 경우 유해한 것일 수 있다.

 

 [2] 프로세스 목록 확인 및 비교

  ▶ 작업관리자에서 실행되고 있는 프로세스는 관리자권한으로 확인하는 것이라 GMER에서 확인하는 것보다 내용이 적다.

  ▶ 그래서 GMER로 진행하였다. (GMER는 32비트, 64비트 모두 지원하며 지속적인 패치를 하는 것으로 확인)

  ▶ 프로세스 목록 내보내기

 

 [3] 서비스 목록 확인 및 비교

  ▶ 서비스의 경우도 프로세스와 동일하게 Windows Service 내에서 확인이 가능하다.

  ▶ GMER는 운영체제에서 진행되고 있는 모든 서비스를 보여준다.

  ▶ 실제로 흔히 보지 못한 서비스도 여러 개 보인다.

  ▶ 서비스 목록 내보내기

 

 [4] 포트점검

  ▶ nmap의 경우 외부에서 확인하기 용이한 것이다.

  ▶ 리얼 서버앞에서 작업하기 때문에 관리자권한의 명령프롬프트에서 진행하였다.

 

  ▶ [USB의 볼륨명(D:\, E:\ 등..)]: 

  ▶ netstat -abon > [USB내 저장주소\report_port.txt]

  + 옵션은 -a는 ALL, -b는 program_name, -o는 process_ID, -n은 No_domain(number로)

 

 [5] 방화벽정책

  ▶ inbound정책 내보내기

  ▶ outbound정책 내보내기

 

 [6] 시작프로그램

  ▶ [Ctrl+R]

  ▶ [shell:startup]

  ▶ 목록 캡쳐

 

 [7] 레지스트리

  ▶ 레지스트리 내보내기

 

 [8] 계정 및 계정그룹

  ▶ 사용자 계정정보 확인

 

 [9] 시스템점검(스크립트)

  ▶ KISA 행정안전부 산업시설 취약점점검 스크립트 실행

  ▶ 취약리스트 메모장으로 저장

 

 [10] 알캡쳐

  ▶ stand_alone 프로그램으로 USB에 설치를 해서 알캡쳐 실행파일을 실행

  ▶ 내보내기가 불가능한 정보는 캡쳐 후 USB에 저장

 

(3) 결과(후기)

 진단하기로 한 당일 밤 늦은시간에 직원이 전부 퇴근하고 불이 꺼진 시간...

어두컴컴한 상태로 전산실에 들어가는데 [관계자 외 출입금지]라는 문구가 붙어있어 기분이 조금 묘했다. 

굉장히 두꺼운 자물쇠로 잠겨있는 것을 대표이사의 도움아래 보안담당자와 함께 들어가게 되었다.

비밀리에 진단하는 것이므로 전산실 출입기록대장은 작성하지 않았다.

예상대로 많은 서버로 인해 저주파소음과 찬공기가 가득 차있었다.

USB를 연결한 후 IP부터 확인을 했다.

낯선환경에서 작업을 하려니 갑자기 더워지고 막막했지만 사전에 정리한 진단목록과 순서에 따라 진행하였다.

서버가 멈추면 안되기 때문에 동시다발적인 작업은 제한되고, 리소스를 많이 잡아먹는 작업은 최소화 하려고 하였다.

그러다보니 예상한 1시간보다 30분이나 더 지체되었다.

여유있다고 생각했었는데 착각이었다.

 

 [1] 루트킷 및 백도어 진단결과

  ▶ 의심스러운 것은 붉은색으로 표시되고 구글링하였다.

 

 [2] 프로세스 목록 확인 및 비교결과

  ▶ 프로세스 목록은 테스트용으로 미리 만들어놓은 Windows Server 2008의 프로세스 목록과 비교 후 다른 것만 구글링 하였다.

 

 [3] 서비스 목록 확인 및 비교

  ▶ 프로세스 목록과 동일하게 미리 만들어 놓은 서버의 서비스 목록과 비교 후 다른 것만 구글링 하였다.

  ▶ 서비스 목록 내에 'Local system' 계정으로 실행되는 이상한 서비스가 존재하지만 서비스에 대한 정보는 어디에도 찾을 수 없었다.

  ▶ 뭔가 쎄한 느낌이 왔다.

  ▶ 또한 보통의 서비스는 [C:\Windows] 내에 위치하지만 이 이상한 서비스는 [C:\"폴더명"\]내의 특정 실행파일을 가리키고 있다.

  ▶ 여기서 소름이 쫙 돋았다...

  ▶ 이상한서비스의 이름에 대해서는 언급하지 않으려고 한다.

 

 

 [4] 포트점검

  ▶ 먼저 열린포트를 확인해본 결과

  ▶ wellknown port가 아닌 포트가 하나 오픈되어 있었다.

  ▶ 그 포트는 [3]에서 언급한 이상한 서비스가 열은 포트이다.

  ▶ 와.................................................. 정말.... 무서운데 뭔가 한건 한 느낌도 든다.

 

 [5] 방화벽정책

  ▶ 미리 만들어 놓은 서버의 서비스 목록과 비교한 결과 특이사항은 보이지 않는다.

 

 [6] 시작프로그램

  ▶ 시작프로그램에 배치파일하나가 들어가있는데 캡쳐만 해온 상태라 내용은 확인할 수 없었다.

 

 [7] 레지스트리

  ▶ 레지스트리를 백업뜨긴 했지만 정작 어디서부터 어디까지 확인해야할지 몰라서 손을 대지 못했다.

 

 [8] 계정 및 계정그룹

  ▶ 10개이상의 사용자계정이 존재하며 업무별로 나누어져 있는 것으로 보인다.

  ▶ 특별히 의심가는 계정은 보이지 않는다.

 

 [9] 시스템점검(스크립트)

  ▶ 스크립트를 돌린 결과 KISA에서 발표한 32개 진단항목 중 14개의 취약점이 발견되었으며 위험도 상 12개, 중 2개이다.

  ▶ 위 내용에 대해서는 기술적 취약점 진단 보고서를 작성해서 제출하였다.

 

 [10] 그 외 점검항목

  ▶ 진단 전 토폴리지를 확인해보았을 때 웹서버는 포트를 열어서 접속이 외부에서 접속이 가능하지만 웹페이지 중에 외부에 공개되지 않은 내부서버로의 리다이렉트나 내부서버에서 데이터베이스서버로의 접근도 확인이 되어 내용을 추가하였다.

 

 [11] 추가진단

  ▶ [3]에서 언급한 이상한 서비스가 가리키는 실행파일과 [4]에서 언급한 이상한 서비스가 열은 것으로 보이는 포트, [6]에서 확인 못한 배치파일 등은 사전에 체크를 하지 못해서 보고 후 전산실에 다시 들어가게 되었다.

  ▶ 들어가서 5분 내로 이상한 서비스가 가리키는 실행파일, 시작프로그램에 있는 배치파일을 꺼내서 나왔다.

  ▶ 배치파일을 확인해본 결과 서버를 부팅하면 배치파일이 이상한 서비스를 시작하도록 하며, 이상한 서비스는 실행파일을 가리키고 있다.

  ▶ 가지고 나와서 실행파일을 실행시켜보자 겉으로는 별다른 이상이 없었다.

  ▶ 이 부분은 실행파일을 리버싱해보아야 알 것으로 보이나, 그 부분까지는 필자는 다루지 않고 보고만 하는 것으로 끝났다.

 

 [12] 추후

  ▶ 기회가 된다면 이상한 서비스가 가리키는 실행파일을 리버싱해보고 싶고, 취약한 부분을 패치해보고 싶다.

 

 

 

댓글