1) IRC (Internet Relay Chat)
정의
- IRC는 실시간 텍스트 기반 통신을 위해 설계된 채팅 프로토콜입니다.
- 1988년 Jarkko Oikarinen가 만든 초기 실시간 채팅 시스템으로, 전 세계 사용자들이 채널(Channel) 단위로 대화 가능.
- 주로 TCP (Transmission Control Protocol) 를 이용하며, 기본 포트는 6667/TCP, SSL/TLS 연결 시 6697/TCP 사용.
핵심 구조
-
클라이언트(Client)
- 사용자가 설치하는 IRC 클라이언트 프로그램 (mIRC, HexChat, Irssi 등).
- 메시지 전송, 수신, 채널 관리, 상태 관리 담당.
-
서버(Server)
- IRC 네트워크의 핵심.
- 클라이언트 접속 관리, 메시지 라우팅, 채널 상태 유지.
- 서버끼리 서로 연결하여 IRC 네트워크 형성.
-
채널(Channel)
- IRC 상의 대화 공간.
#channel_name 형식.
- 퍼블릭 채널과 프라이빗 채널 구분 가능.
-
닉네임(Nickname)과 사용자 정보
- 고유 닉네임 사용.
- IRC 서버에 접속 시 사용자 호스트, 클라이언트 정보, 서버 정보 포함.
프로토콜 특징
- 텍스트 기반 명령어:
/join, /part, /msg, /nick, /quit 등.
- 실시간성: TCP 연결을 유지하며 지속적으로 메시지 스트림을 송수신.
- 확장성: IRCd(IRC daemon) 서버 소프트웨어 종류에 따라 기능, 명령어 확장 가능.
- 보안: 원래 설계에는 인증과 암호화가 거의 없으므로 현대에는 SSL/TLS 사용 필수.
펜테스터 관점
- 포트 스캐닝 대상: 기본 포트 6667, SSL 6697 등.
- 취약점: 무차별 대입 로그인, 오픈 리레이(서버가 외부 메시지를 중계) 가능성, 버퍼 오버플로, 서비스 거부 공격.
- 익명성 및 스푸핑: IRC 프로토콜 자체는 인증 약함. IP 익명화 프록시를 사용하면 추적 어려움.
- 봇넷/자동화 악용 가능: IRC는 봇넷 C&C(Command & Control) 구조에 활용됨.
요약
- IRC = 실시간 텍스트 채팅 프로토콜, 클라이언트-서버 구조, TCP 기반, 채널 단위 대화.
- 단점: 암호화/인증 미비, DoS 취약, 현대 웹 환경에서는 포트 차단 문제 존재.
2) CGI (Common Gateway Interface)
정의
- CGI = Common Gateway Interface, 웹 서버와 외부 프로그램/스크립트 간 인터페이스 표준.
- 브라우저 요청 → 웹 서버 → CGI 프로그램 → 응답 반환 → 브라우저 출력 흐름을 담당.
동작 구조
-
브라우저
- HTTP 요청(GET/POST 등)으로 CGI 스크립트 호출.
-
웹 서버
- 요청을 CGI 스크립트로 전달.
- 환경 변수(QUERY_STRING, REQUEST_METHOD 등) 통해 요청 정보 제공.
-
CGI 프로그램
- Perl, Python, PHP, Bash 등으로 작성 가능.
- 요청 처리 후,
Content-Type 헤더 포함 HTTP 응답 생성.
-
브라우저
[브라우저] —HTTP—> [웹 서버] —CGI—> [스크립트/프로그램] —결과—> [브라우저]
특징
- 언어 독립성: CGI 스펙만 지키면 어떤 언어로든 구현 가능.
- 단기 프로세스 기반: 요청마다 새로운 프로세스 실행. → 성능 제한 존재.
- 입력/출력 표준화: 표준 입력(stdin), 표준 출력(stdout) 활용.
펜테스터 관점
-
취약점:
- 명령어 주입(Command Injection): 사용자 입력을 쉘 명령어로 전달 시 가능.
- 디렉터리 트래버설(Directory Traversal): 잘못된 경로 처리 시 서버 파일 접근 가능.
- 정보 유출: CGI 오류 메시지에 서버 구조/환경 변수 포함 가능.
-
보안 점검:
- 입력값 검증 필수.
- 실행 권한 최소화.
- 출력 시 HTML/JavaScript 이스케이프 적용.
현대적 사용
- CGI는 초기 웹 환경에서는 표준이었지만 현대 웹에서는 성능과 확장성 한계로 거의 레거시.
- 대안: FastCGI, WSGI(Web Server Gateway Interface, Python), Node.js 기반 서버 등.
요약
- CGI = 웹 서버와 외부 프로그램 연결 인터페이스, 언어 독립적, 요청마다 새 프로세스 실행.
- 단점: 성능 제한, 초기 보안 설계 미흡, 현대 웹에서는 FastCGI/WSGI/Node.js 등으로 대체.
3) IRC와 CGI의 관계
- CGI와 IRC가 결합하면 웹 브라우저를 통한 IRC 접속이 가능.
- CGI 프로그램이 IRC 서버와 TCP 연결을 대행 → 브라우저는 HTTP/HTTPS만 사용 → IRC 접속 프록시 역할.
- 대표 사례: CGIIRC, 웹 기반 IRC 클라이언트.