본문 바로가기

🔐 Security/System

[시스템보안] 백도어

위 글은 2022년도 목포대학교 학점교류 '시스템보안' 수업에서 수행한 과제를 작성한 내용입니다.
교재 : 시스템 해킹과 보안: 정보 보안 개론과 실습 3판, 양대일 (2018)

1. SetUID형 로컬 백도어 설치와 이용하기

9-1의 백도어는 SetUID 비트가 설정된 백도어를 발견해도 관리자가 쉽게 알지 못하게 변형된 것이다

1) 백도어 생성하기

백도어 소스, 백도어 인수 (char exec[100])'을 system 명령으로 실행한다.
root 계정으로 컴파일하여 SetUID 비트 설정을 한 후 실행권한을 부여한다.

 

2) 백도어 동작하기

백도어에 ls 명령어를 사용할 때 일반 ls 명령을 사용한 것과 같은 결과를 얻을 수 있다.

 

id 명령을 실행해보면 일반계정임에도 uid와 gid가 0(관리자 계정)으로 출력된다.
인수를 입력하지 않으면 출력이 없어 관리자도 용도를 파악하기 쉽지 않아 탐지가 어렵다.

 

3) 백도어 설치하기

백도어를 숨기는 방법은 기존 SetUID가 부여된 파일 중 잘 사용하지 않는 파일로 변경하거나, 시스템의 실행 파일인 것처럼 위장하면 된다.

root 계정으로 SetUID 비트가 주어진 정상 파일을 탐색한다.

결과를 확인해보면 backdoor 파일에 SetUID 권한이 주어졌음을 알 수 있다.

root 계정으로 컴파일하여 SetUID 비트가 설정되고 실행권한이 부여된 backdoor2를 생성한다.

백도어 숨김) netctl 파일이 있는 경우, 백업한 뒤 원본 파일에 덮어쓴다.

백도어 사용) 관리자만 읽기 원한이 있는 shadow 파일을 읽을 수 있다.

 

2. 윈도우 백도어 설치와 이용하기

1) netcat 복사하기

해킹도구 netcat을 다운로드 후 서버의 system 32에 복사한다.

 

2) 시작 프로그램 등록하기

관리자 권한으로 CMD를 실행한다.

netcat을 시작 프로그램을 등록한 후, 확인한다.

 

3) 방화벽 등록하기

다른 창 하나를 띄워서 포트 번호를 ‘455’로 등록하여 윈도우 방화벽을 설정한다.

 

4) 백도어 접속 확인하기

cmd 창 하나를 띄워서 netcat 클라이언트 시스템을 실행시켜 접속을 기다린다.

공격자가 될 다른 창 하나를 띄워 nc –v (공격할 컴퓨터 아이피 주소)를 입력하면 원격 명령 창을 획득할 수 있다.

 

3. 자동 실행형 백도어 설치하고 이용하기

1) cron 데몬 이해하기

vi /etc/crontab/ 명령으로 cron 데몬을 확인한다. 이는 프로그램을 주기적으로 실행하거나 중지하는 기능을 한다.

 

2) cron 데몬을 이용한 백도어 구동 및 중지하기

ishd 백도어를 설치한 후, crontab에 다음을 추가하면 어떤 일이 발생하는가?

앞의 숫자와 * 4개는 프로그램을 실행할 시간으로 분, 시, 날짜, 달, 요일을 의미한다.
이 crontab 파일은 ishd 데몬을 매일 새벽 4시에서 5시까지 구동한다.
따라서 공격자는 이 시간에만 공격을 시도하게 될 것이고, 관리자는 ishd가 구동되는지 새벽 4~5시에만 확인할 수 있어 백도어 탐지가 어려워진다.

 

4. 윈도우 백도어 탐지 및 제거하기

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

백도어는 특성상 네트워크 연결이 필수이므로, 프로그램에서 열린 포트를 확인한다.

포트별 동작하는 프로그램을 확인해보면 nc.exe 455번 포트가 열려있음을 알 수 있다.공격자가 연결을 유지하면 공격자의 호스트 이름 및 IP주소 확인이 가능하다.

2) 프로세스 확인하기

Process Explorer 이용하여 프로세스를 확인한다. 확인 결과 nc.exe가 쉽게 탐지됨을 알 수 있다.

다만 프로세스 이름을 svchost.exe처럼 기존 프로세스와 같게 하거나, exe 명령 등으로 process explorer를 이용하여 검색하면 상황에 따라 탐지가 어려울 수 있다.

다음으로 프로세스 속성을 확인한다.

cmd.exe를 사용하는 다른 프로그램을 확인하고 확인되는 모든 프로세스를 중지한다.

 

3) 레지스트리 확인하기

윈도우 시스템은 시스템 운영 관련 설정값을 재부팅 하더라도 유지하기 위해 레지스트리에 기록한다.

탐지를 위해 레지스트리 내용 확인이 필요하다.
레지스트리를 txt 파일로 내보내는 데 성공하였으나, 해당 nc_reg.txt 파일이 확인되지 않고 응답 없음 및 종료되는 오류가 발생하여 레지스트리의 내용을 확인하지 못했다.

 

4) 파일 확인하기

백도어 실제 파일을 확인하기 위한 도구로 Total Commander를 사용한다.

설정에서 숨김/시스템 파일 표시하는 옵션을 설정 후 관리자 권한으로 실행한다.

실행결과 nc.exe 파일은 두 곳에 존재하는데, 첫 번째 것은 단순 복사 파일이지만 때에 따라 한쪽을 삭제하면 다른 쪽을 기반으로 재복사할 때도 있다. 검색 시 nc.exe파일에 추가 문자열 이 포함된 때도 있다.
따라서 해당 파일과 유사한 파일 여부 및 nc.exe 파일의 실행과 관련한 다른 설정 파일의 있는지 확인할 수 있는 문자열 포함 검색도 수행하면 좋다.

 

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

윈도우는 기본적으로 SFC(System File Checker)를 제공한다. 주기적인 무결성 검사로 다른 침입 흔적 확인이 가능하고, 변경 여부를 검사한다.

동작 원리는 정상 파일과 시스템에 설치된 파일의 일치 여부를 테스트한다.

 

5. tripwire를 이용한 무결성 검사하기

1) 설치하기

tripwire 설치 후 unzip 해준다.

해당 경로에 설치 후, make로 컴파일한다.

관리자 계정으로 전환한 후 make install로 설치한다.

라이센스를 확인 및 동의하여 설치를 진행한다.

각 파일 생성에 필요한 암호를 입력하면 설치가 성공했다는 메시지가 나온다.

 

2) tripwire 설정하기

설정 파일과 key 파일, 정책 파일을 확인한다.
tw.pol과 tw.cfg는 암호화된 tripwire 관련 설정 파일이다. 기본 설정된 내용은 twpol.txt와 twcfg.txt. 파일이다. t

wcfg 파일은 tripwire 실행 환경 관련 사항이다. 

twpol.txt.파일은 시스템의 무결성 검사목록이 저장된 파일이다.

 

3) 초기 시스템 검사 목록 작성하기

tripwire를 실행하여 데이터베이스를 생성하고, 로컬 비밀번호를 입력한다.

현재 있는 파일을 대상으로 해시값을 만들어서 DB에 저장한다. clean한 상태에서 할 때 의미가 있고 DB에 저장된 값은 시스템의 현재값이다.

 

4) 무결성 검사하기

tripwire를 설치하면 매일 자동으로 cron 데몬에 의해서 실행되지만, 임의로 --check 옵션을 설정하여 무결성을 검사한다.

검사가 끝났고, 보고서가 생성되었다.

보고서의 확장자는 twr이고, 경로는 tripwire(설치 위치)/lib/tripwire/report이다.

보고서 확인을 위해 sbin 디렉터리로 들어가서 twprint –m r —twrfile “보고서 파일 경로” 를 입력한다.

다음과 같은 결과가 나온다