정보보안 스터디 - 15주차 7일 - SUID 백도어 코드 제작
☞ Bind TCP VS Reverse TCP
bind tcp는 일반적으로
피해자 시스템에서 nc 서비스를 리슨상태로 열어 둔뒤 공격자가 TCP 연결을 하려고 하는 것을 말합니다.
TCP 연결이기 때문에 당연히 3way handshaking을 거치겠죠.
bash쉘을 처음부터 허락하면서 4444포트를 열어주는 방식입니다.
Syn요청은 처음 공격자가 보내고 피해자가 허락해주는 방식입니다.
하지만 이부분에서 피해자가 공인 IP라면 공격자가 바로 접근이 가능하겠지만, 사설 IP라면 들어갈 수 있는 방법이 없습니다. 물론 포트 포워딩이 구성된 서버 및 시스템은 공격이 가능합니다.
그리고 또한 보안상 공격자가 열고 피해자가 접근하는 방식이 좋습니다. 피해자 시스템에서 외부 접근을 함부로 할 수 없도록 방화벽이 되어있거나 접근이 쉽지는 않을 겁니다. 하지만 반대 방식으로 피해자가 직접 요청하는 방식이라면 더 쉬울 겁니다.
그렇기 때문에 Reverse TCP방식을 사용합니다.
공격자 시스템에서 4444포트를 열고 리슨 상태로 기다립니다.
그러면 Syn을 피해자가 처음 요청하면서 bash쉘을 허락합니다.
물론 두 방식 다 피해자 시스템에서 어떤 행동이 필요합니다.
전자의 경우는 bash쉘을 열면서 리슨상태로 만드는 프로그램이고
후자의 경우는 TCP Syn을 요청하는 악성코드를 실행시켜야합니다.
whoami
id
python -c 'import pty;pty.spawn("/bin/bash")'
을 실시해서 bash쉘을 실행시켜 프롬프트를 업그레이드 시킵니다.
setuid 가 설정된 파일을 탐색하면서 권한 상승을 노립니다.
☞ nmap 사용법
ping(ARP)스캔
nmap -sP -p 443 192.168.20.200
응답이 있을 경우 who, is set~ 의 교환이 오고갑니다.
없을 경우 다른 대부분의 스캔과 마찬가지로 who를 두번 보냅니다.
scripts이용
samba에 대한 취약점 확인 스캔
nmap -sS -sV -O 192.168.20.200 -p 443 --script=smb~~~~ ms17-010.nse
물론 ms17버전 이하에서만 취약점이 확인되고, 이상의 버전에서는 패치가 되었을 겁니다.
파일로 저장
nmap -sS sV -O 192.168.20.0/24 -oA CentOS > /dev/null
CentOS.nmap, xml 등의 파일 확장자 형식으로 저장되며
cat을 통해 확인이 가능합니다.
그래픽 기반인 zenmap을 사용해서 상세스캔 내용을
save scan > xml파일로 저장해도 됩니다.
☞ SUID를 이용한 백도어 코드 만들기
gcc -o bashshell backdoor.c
로 컴파일 해주며
실행파일을 만들어줍니다.
chmod 4755 를 주고, 실행했을 때 setuid=0(root), setgid=0 으로 만들어주는 프로그램입니다.
물론 setuid 설정이 되었기 때문에 루트권한이 필요했던 기능을 이용할 수 있었던 것입니다.
passwd, chsh 같은 기본적으로 setuid가 설정되어있는 경우는
사용하려면 기본 패스워드는 물론 기능자체가 이미 제한되어있기 때문에 setuid를 설정 하기에는 적절합니다.
하지만
usermod -s /bin/bash user01
의 경우에는 usermod를 통하여 bash, csh, zsh 등 쉘 종류를 누구에게나 설정한다면 /etc/passwd의 쓰기권한을 획득하는 것이기 때문에 조금 위험합니다.
diff 를 통해
정기점검 전, 후에
어떤 기능이 setuid가 설정되었는지 점검을 할 수 있습니다.