Security_lab

백도어 탐지 순서와 대응책

부산대보금자리 2021. 8. 2. 12:18

1. 현재 동작 중인 프로세스 확인

현재 프로세스를 확인하여 백도어가 아닌 정상 프로세스를 아는 것도 매우 중요하다. 대부분 백도어 자체가 티가 나게끔 이름을 짓지 않기 때문이다. 따라서 윈도우와 리눅스 시스템 등 정상 프로세스를 외워 두면 좋다. 특히 윈도 프로세스는 이름을 어느 정도 인지하고 있으면 윈도우 웜이나 바이러스, 백도어를 대응하는 데 큰 도움이 된다. 

다음 아래 프로세스 20개는 윈도우 시스템이 동작하는 기본 프로세스이다. 익혀 두면 여러 가지로 유용한데, 특히 웜 바이러스나 백도어가 가장 애용하는 것은 Csrss와 Svchost프로세스이다. 

- Csrss.exe(=client/server Runtime subsystem) : 윈도우 콘솔을 관장하고, 스레드를 생성, 삭제하며, 32비트 가상 MS-DOS 모드를 지원하는 프로세스이다.

- Explorer.exe : 작업 표시줄, 바탕화면 등 사용자 셸을 지원하는 프로세스이다.

- Lsass.exe : Winlogon 서비스에 필요한 인증 프로세스이다.

- Mstask.exe : 시스템 백업이나 업데이트 등을 작업하는 스케줄러 프로세스이다.

- Smss.exe : 사용자 세션을 시작하는 기능을 담당하는 프로세스이다. Winlogon, Win32를 구동시키고, 시스템 변수를 설정한다. 또 Smss는 Winlogon이나 Csrss가 끝나기를 기다려 정상적인 Winlogon, Csrss를 종료할 때 시스템을 종료시킨다. 

- Spoolsv.exe : 프린터와 팩스의 스풀링 기능을 담당하는 프로세스이다.

- Svchost.exe : DLL이 실행하는 프로세스의 기본 프로세스이다. 따라서 한 시스템에서 svchost 프로세스를 여러 개 볼 수 있다.

- Service.exe : 시스템 서비스를 시작, 정지시키고, 이들 간의 상호 작용하는 기능을 수행하는 프로세스이다.

- System : 대부분의 커널 모드 스레드의 시작점이 되는 프로세스이다.

- System Idle Process : 각 cpu 마다 하나씩 실행하며, cpu의 잔여 프로세스 처리량을 %로 나타낸 값이다.

- Taskmgr.exe : windows 작업 관리자 자신의 프로세스이다.

- Winlogon.exe : 사용자 로그인과 로그오프를 담당하는 프로세스이다. 윈도우를 시작 및 종료할 때 활성화된다.

- Winmgmt.exe : 장치 관리 및 계정 관리 네트워크 등 동작과 관련한 스크립트를 위한 프로세스이다..

- msdtc.exe : 웹 서버 및 sql서버를 구동할 때 다른 서버와 연동하는 프로세스이다.

- ctfmon.exe : 키보드, 음성, 손으로 적은 글 등 여러 가지 텍스트 입력 처리를 할 수 있도록 지원하는 프로세스이다.

- dfssvc.exe : 분산 파일 시스템을 지원하려고 백그라운드로 실행하는 프로세스이다. 

 

2. 열린 포트 확인 

백도어 상당수가 외부와 통신을 하려고 서비스 포트를 생성한다. 시스템에서는 netstat 명령으로 열린 포트를 확인할 수 있는데, 일반 시스템에서 사용하는 포트가 그리 많지 않기 때문에 주의해서 살펴보면 백도어가 사용하는 포트를 쉽게 확인할 수 있다. 과거 유명했던 백도어는 1234나 787,666 등처럼 꽤 특이한 포트 번호를 사용해서 충분히 의심할 만했지만, 백도어 중에 그렇지 않은 포트 번호를 쓰는 경우도 많다. 따라서 포트 번호만으로는 분별이 확실하지 않을 수 있는데, 이때는 스니퍼를 이용한 패킷 분석으로 백도어가 사용하는 포트를 확인할 수도 있다. 

 

3.SetUID 파일 검사

윈도우 시스템에는 해당되지 않지만 setUID파일은 리눅스 시스템에서 로컬 백도어로 강력한 기능을 가질 때가 많다. 따라서 setUID파일 중에 추가되거나 변경된 것은 없는지 주기적으로 살펴보아야 한다.

 

4. 바이러스와 백도어 탐지 툴 이용

가장 간편한 경우이다. 잘 알려진 백도어는 대부분 바이러스 일종으로 분류되는데, 백신 툴은 물론이고 다양한 탐지 툴에서 발견된다. 이런 툴을 사용하면 백도어를 쉽게 잡아낼 수 있다. 하지만 리눅스에서는 이런 툴이 많이 부족하므로 수동으로 찾아야 할 때가 많다.

 

5. 무결성 검사

무결성 검사는 시스템에 어떤 변화가 일어나는지 테스트하는 것이다. 무결성 검사에는 MD5 해시 기법을 많이 쓴다. 파일 내용이 조금만 바뀌어도 해시 결과 값이 다르기 때문에 관리자는 주요 파일의 MD5값을 주기적으로 수집하고 검사하여 변경되는 파일 내역을 확인해야 한다. 관리자가 변경하지 않았거나 시스템 운영상 변할 일이 없다면 변경된 파일을 조치하면 된다.

 

6. 로그 분석

마지막으로 백도어를 탐지하는 방법에는 로그 분석이 있다. 로그 분석 방법은 무척 다양하며, 사이버 포렌식이라는 하나의 분야로 정착했다. 

 

- 윈도우 백도어 탐지 및 제거하기(실전) 

1) 네트워크 연결 확인하기 

https://blog.daum.net/knightofelf/4439

 

Windows 에서 Promiscuous Mode 확인하는법

Windows 에서 Promiscuous Mode 확인하는법 http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=951173&ref=951173&page=1 정리해보면. 윈도우 - Promqry.exe (닷넷 프레임워크 필요) -..

blog.daum.net

리눅스에서는 간단한 명령어로 확인해볼 수 있지만 윈도우는 잘 알려진 툴을 이용해서 Promiscuous mode, 즉 스니퍼 같은 형태로 동작하는지 확인을 해야 한다. 

netstat -ab명령어를 통해 포트를 열고 있는 프로세스를 확인할 수 있다.

만약 공격자가 연결을 유지하고 있을 때는 다음과 같이 공격자의 호스트 이름 또는 IP주소를 확인할 수 있다.

2) 프로세스 확인하기 

백도어의 종류에 따라 이름이 기존의 svchost.exe처럼 기존 프로세스와 동일할 수도 있고 웜이나 바이러스처럼 악성 코드 형태로 동작하는 프로그램은 백도어를 삭제했을 때, 이를 복구할 수 있도록 모니터링 프로세스와 백업 프로세스까지 생성할 때가 많기 때문에 이 또한 확인해야 한다. 이를 위해 프로세스의 상세 정보를 확인하여 해당 프로그램이 쓰는 DLL이름이나 연계해서 실행하는 것처럼 보이는 EXE명령 등으로 Process Explorer를 이용하여 검색한다. 

https://ndb796.tistory.com/303

 

프로세스 익스플로러(Process Explorer)의 기본적인 사용법

프로세스 익스플로러(Process Explorer)를 이용하면 어떠한 프로그램이 특정한 폴더나 디바이스에 접근하고 있는지 확인할 수 있습니다. 예를 들어 현재 웹 캠(Web Cam)의 불빛이 들어와서 사용 중이라

ndb796.tistory.com

3) 레지스트리 확인하기

윈도우 시스템은 시스템 운영과 관련하여 재부팅하더라도 기본 설정 값이 변하지 않도록 레지스트리에 여러 값을 기록해둔다. 백도어도 레지스트리를 이용할 때가 많아 백도어를 삭제할 때는 레지스트리에서도 내용을 확인해야 한다. 레지스티리도 검색을 지원하지만 불편하므로

 

다음과 같이 내보내기를 하여 txt 파일로 내보내 검토하면 된다. 

4) 파일 확인하기 

백도어를 찾고 실제 파일을 확인해보기 위해서는 윈도우 탐색기 대신 Total Commander를 사용한다.

윈도우 탐색기를 안 쓰는 이유는 윈도우 탐색기는 윈도우 운영체제와 많은 라이브러리를 공유하고, 윈도우 탐색기가 공격 대상이 되면 윈도우 탐색기를 쓸 수 없다. 또 윈도우 탐색기로 특정 파일을 숨기거나 삭제하지 않도록 되어 있는 경우도 있다. 이렇게 제약적인 상황이 발생하기 때문에 윈도우와 독립적인 파일 탐색기를 사용한다. 

추가로 검색해 봤을 때 윈도우 탐색기보다 편리한 점도 많이 보인다. 자세한 것은 아래 링크를 참조하자

https://m.blog.naver.com/bestian/222035297155

 

Total Commander (토탈 커맨더)

최고의 업무 유틸리티 total commander 신입사원 때부터 몇 십 년간 사용하고 있는 프로그램이다 - 파일 복...

blog.naver.com

이를 이용하여 백도어를 확인하기 전에 설정해야 할 사항은 [환경설정]-[옵션]-[화면]에서 '숨김/시스템 파일 표시'옵션을 설정한다.

그리고 [명령]-[파일 찾기] 메뉴를 통해 파일을 찾는다. 

5) 백도어 제거하기 

백도어를 삭제하는 절차는 비교적 간단하다.

- 백도어 프로세스 중지

- 백도어 파일 삭제

- 레지스트리 삭제

6) 시스템 무결성 검사하기

시스템 무결성 검사는 앞서 살펴본 모든 테스트에서 백도어 탐지에 실패했을 때 사용할 수 있다. 하지만 주기적인 무결성 검사로 다른 침입 흔적도 찾아낼 수 있으므로 중요 시스템이나 디렉터리는 무결성 점검 툴을 사용하여 주기적으로 점검하면 좋다.

많이 알려지지는 않았으나, 윈도우에서는 SFC를 기본으로 제공한다. 이 툴을 동작하려면 윈도우 설치 CD가 필요하다. 

정상 파일과 시스템에 설치된 파일이 일치하는지 테스트한다. 

리눅스의 경우 대표적으로 tripwire를 통해 무결성을 검사한다. 

tripwire의 사용방법은 아래 링크를 통해 간단히 실행해볼 수 있다. 

http://www.linux.co.kr/security/tripwire/index.htm

 

TripWire 설치및 사용법

강사 : 박성수 (papa@superuser.co.kr) TripWire는 파일시스템무결성 점검을 하는 서버보안도구로서 파일들의 변동사항유무를 체크할수 있는 대표적인 보안유틸리티이다. 이번 강좌는 이런 Tripwire의 설

www.linux.co.kr

 

'Security_lab' 카테고리의 다른 글

로그 분석과 설정  (0) 2021.08.04
해킹 침해사고 대응절차  (0) 2021.08.03
백도어  (0) 2021.07.30
포맷 스트링 공격  (0) 2021.07.29
버퍼 오버플로 공격 대응책  (0) 2021.07.28