1. 백도어의 이해
- 시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용 프로그램에 접근
- 로그를 남기지 않음 (관리자도 이를 발견하기 어려움)
- 주로 사람들이 많이 사용할 것 같은 프로그램에 심어놓음 (안드로이드 apk 파일 등)
1) 백도어와 트로이 목마
- 트로이 목마 : 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램
- 스파이웨어 : 설치된 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램
- 백도어 : 원래 의미는 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로
2) 백도어의 종류 (동작과 목적에 따라 구분)
- 로컬 백도어: 서버의 셸을 얻어내 관리자로 권한 상승(Privilege Escalation)할 때 사용
- 원격 백도어: 계정에 패스워드 입력하고 로그인한 것처럼 원격으로 관리자 권한 획득해 시스템에 접근, 네트워크에 자신의 포트를 개방
- 패스워드 크래킹 백도어: 인증에 필요한 패스워드를 원격지 공격자에게 보내주는 역할, 공격자가 로그인 가능
- 시스템 설정 변경 백도어: 시스템 설정을 해커가 원하는 대로 변경하기 위한 툴, 보안 모니터링이 적은 시각에 접근함
- 트로이 목마 형태의 프로그램 : 처음부터 백도어를 목적으로 만들어진 것은 아니지만 백도어로 동작하는 경우
2. 백도어 예시
1) 로컬 백도어 생성
- 백도어의 인수(char exec[100])를 system 명령으로 실행하는 간단한 형태
- SetUID 비트에 설정과 실행 권한 부여
2) 로컬 백도어의 효과
- id 명령 실행: 일반 계정에서도 uid, gid가 0 → 즉 관리자 계정으로 출력
- shadow 파일은 일반 계정이 읽을 수 있는 권한 없음
- SetUID 비트를 가지고 있는 backdoor 파일을 통해 관리자 소유의 shadow 파일 조회 가능
3) 백도어 활용 시나리오
- 백도어를 이용하는 외부 침투자도 시스템에서 백도어를 실행한 사용자 권한으로 시스템에 침투
- 커널 백도어 : 운영체제의 핵심 부분인 커널에 심어 넣는 백도어, 민감하고 난이도 높음
- 큰 차이는 없으며 커널에서 동작하기 때문에 일반 백도어보다 더 강력
- 제거하기 어렵고 설치 작업이 까다로움
- 리눅스에서 백도어 동작 통제 : cron 같은 스케줄러 이용
- 이를 통해 필요할 때에만 백도어를 동작시켜 존재 자체를 효과적으로 숨김
4) Cron 스케줄러
- 데몬의 종류 중 하나
- 일정 시간이 되면 자체적으로 프로그램을 실행 또는 중지하는 스케줄러
- 앞의 숫자, * 4개 : 해당 프로그램이 실행될 시간으로, 각각 분, 시, 날짜, 달, 요일
- ‘30 16,17 5-7 */2 * reboot’는 2개월마다(*/2) 5일부터 7일까지(5-7), 16시와 17시(16,17) 30분에 재 부팅 하라는 의미
<Crontab에 아래의 내용을 추가>
- ishd 데몬은 매일 새벽 4~5시에만 구동되고, 공격자는 이 시간에만 접속을 시도
- 관리자는 ishd가 구동되고 있는지 새벽 4~5시에만 확인이 가능함
3. 백도어 탐지 순서와 대응책
1) 일반적으로 Windows 및 리눅스에서 백도어 탐지할 수 있는 방법
- 현재 동작중인 프로세스 확인 (Windows)
2) 일반적으로 Windows 및 리눅스에서 백도어 탐지할 수 있는 방법
- 열린 포트 확인
- 백도어 상당수가 외부와 통신 위해 서비스 포트 생성. 시스템에서는 netstat 명령으로 열린 포트 확인
- 일반 시스템에서 사용되는 포트는 그리 많지 않으므로 주의해 살펴보면 백도어가 사용하는 포트 쉽게 확인 가능
- SetUID 파일 검사 (Linux)
3) 일반적으로 Windows 및 리눅스에서 백도어 탐지할 수 있는 방법
- 바이러스와 백도어 탐지 툴 이용
- 잘 알려진 백도어는 대부분 바이러스 일종으로 분류, 백신 툴이나 탐지 툴에 발견
- 무결성 검사
- 시스템에 어떤 변화가 일어나는지 테스트하는 것. MD5 해시 기법 많이 사용
- 파일 내용이 조금만 바뀌어도 MD5 해시 결과 값이 다르므로 관리자는 주요 파일의 MD5 값 을 주기적으로 수집, 검사하여 파일의 변경 내역을 확인
- 로그 분석
- 방법은 무척 다양하며, Cyber Forensic(사이버 포렌식)이라는 하나의 분야로 정착
- 참고: 리눅스에서는 dmesg 명령어를 통해 커널 로그를 확인할 수 있음
'정보보안 공부 > 운영체제, 시스템' 카테고리의 다른 글
[운영체제] 세마포어 구현 (0) | 2023.02.06 |
---|---|
[시스템 보안] 세그멘테이션 폴트를 gdb 디버깅을 통해 확인하기 (0) | 2022.06.26 |
[시스템 보안] 레이스 컨디션 (race condition) (0) | 2022.06.26 |