직역하면 뒷문, 공격자가 침투에 성공했을때 다음에 다시 침투하거나 추가적인 공격을 위해 만들어둠
쉽게 말해 스파이가 담장을 넘어와 담장 어딘가에 개구멍을 파는것이라고 생각하면됨
공격유형으로는 로컬, 원격 두 가지 방식이 있음
접속방식으로는 다이렉트, 리버스 커넥션 방식
다운로더
악성코드를 다운로드해서 설치하는 프로그램
ex) 트로이목마 형태의 다운로더
드롭퍼
사용자 몰래 악성코드를 시스템에 설치하는 프로그램
ex) 트로이목마 형태의 드롭퍼
키로거
(우리가 아는 그것..) 피해자가 입력한 키 정보들을 공격자가 보거나 뺏어오는 것
공격유형으로 하드웨어형 키로거와 소프트웨어형 키로거가 있음
혹스(Hoax)
장난의 목적이 큼
가짜 바이러스
ex) 행운의 편지, 당신은 XX를 보았습니다 등
익스플로잇
소프트웨어의 취약점을 이용하여 시스템의 권한을 획득하는 프로그램
루트킷
초기의 의미
root + kit
좋은 의미의 백도어의 일종
현재의 의미
은닉
보안프로그램으로부터 모습을 숨기고 커널단에 메모리를 상주시킴
커널단은 발견 및 분석이 어렵다는 점을 이용
랫(RAT : Remote Administration Tools)
원격 PC를 액세스하는 프로그램
원격 관리 기능을 이용하여 피해자의 컴퓨터를 제어
기능
화면/캠 캡쳐 또는 제어
파일 관리
쉘 제어
컴퓨터 제어
레지스트리 관리
마우스 및 키보드 제어
채팅 기능
하드웨어 과부하
기타 다양한 소프트웨어 제품 관련 기능
공격자가 많이 활용하는 프로그램
이후 교육원에서 실습한 내용
로컬 백도어 - passwd 실습
CentOS(40)
useradd -o -u 0 back
-o -u 0 : UID가 0인데, 중복이 가능하게 해줌
passwd back
su khtest171
없으면 만드셈, 뒷 숫자는 아무거나
id
su back
id
로컬 백도어 - SetUID를 통한 권한 상승
SetUID의 사용 예
파일이 실행될 경우 부모 프로세스의 권한이 아닌 파일의 소유주 권한으로 실행되고 종료시 반환
SetUID 가 적용된 검색
find / -perm +4000 -exec ls -l {} \; 2> /dev/null
0> 표준 입력
1> 표준 출력
2> 표준 에러
/dev/null 리눅스판 휴지통(?)
SetUID가 설정되어 있는 대표적인 프로그램 : su, passwd
RUID(Real UID) / EUID (Effective UID)
passwd 파일이 관리자 권한으로 실행 될 때 일반 사용자 계정에 의한 실행인지 판별하여야 하며 이때 사용되는 것들
Linux에서 프로세스가 실행될 경우 두 가지 UID의 정보를 관리하며, SetUID에 의해 프로세스 UID가 적용될 경우 RUID는 변경되지 않고, EUID만 해당 파일의 소유주 권한으로 상승
이로 인해 프로세스가 두 가지의 다른 UID를 갖게 되는데, 이 때 기본적인 접근 허가를 EUID로 수행하며, 필요할 경우 프로그램 내부적으로 RUID를 확인하여 SetUID를 통한 권한 상승인지 실제 해당 사용자인지를 분별할 수 있게 됨 -> passwd 프로그램이 실행될 때 내부적으로 RUID를 확인하여 root 사용자인지 일반 사용자의 권한 상승인지를 확인하여 예외 처리 수행
예제를 통해 RUID / EUID 권한 확인
getuid.c
일반 권한
SetUID 권한
> SetUID 설정
> RUID와 EUID가 다름
다른 예제
getuid.c
일반 권한
SetUID를 이용한 권한 상승 백도어 예제
cd /tmp
vim backdoor.c
gcc -o backdoor backdoor.c
chmod 4755 backdoor
정상 프로그램처럼 위장하여 백도어 제작
fake_ping.c
install.sh
보안 대책
find 명령을 통해 SetUID가 부여된 프로그램 확인
SetUID가 부여된 프로그램들을 따로 목록화하여 관리
Partition Mounting 시 SetUID가 불필요한 파티션에서는 --nosuid 옵션으로 마운트