๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

IT ์ผ๋ฐ˜

[202505] IMSI ์•”ํ˜ธํ™”, ์‹œ๋ฎฌ๋ ˆ์ด์…˜์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ(SKT ํ•ดํ‚น ์ด์Šˆ)

๐Ÿ“ฑ IMSI ์•”ํ˜ธํ™”: ๋ชจ๋ฐ”์ผ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์„ ์œ„ํ•œ ํ•„์ˆ˜ ์š”์†Œ

1. IMSI๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

IMSI(International Mobile Subscriber Identity)๋Š” ๊ฐ ๋ชจ๋ฐ”์ผ ๊ฐ€์ž…์ž์—๊ฒŒ ๋ถ€์—ฌ๋˜๋Š” ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋กœ, SIM ์นด๋“œ์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ†ต์‹  ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉ์ž์˜ ์‹ ์›์„ ํ™•์ธํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. IMSI๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

  • MCC(Mobile Country Code): ๊ตญ๊ฐ€ ์ฝ”๋“œ
  • MNC(Mobile Network Code): ํ†ต์‹ ์‚ฌ ์ฝ”๋“œ
  • MSIN(Mobile Subscriber Identification Number): ๊ฐ€์ž…์ž ๊ณ ์œ  ๋ฒˆํ˜ธ

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด IMSI๋Š” ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์œ ์ผํ•œ ์‹๋ณ„์ž๋กœ ๊ธฐ๋Šฅํ•ฉ๋‹ˆ๋‹ค .

2. IMSI๊ฐ€ ๋ณด์•ˆ ์œ„ํ˜‘์— ๋…ธ์ถœ๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์‚ผ์„ฑ์ „์ž ๊ฐค๋Ÿญ์‹œ S25 ์ž๊ธ‰์ œ SM-S931N, ์•„์ด์Šค๋ธ”๋ฃจ, 256GB

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

์ „ํ†ต์ ์ธ 2G, 3G, 4G ๋„คํŠธ์›Œํฌ์—์„œ๋Š” IMSI๊ฐ€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ „์†ก๋˜์–ด, ํ•ด์ปค๋“ค์ด IMSI๋ฅผ ๊ฐ€๋กœ์ฑ„๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•ด์ปค๋“ค์€ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ํ†ต์‹  ๋‚ด์šฉ์„ ๊ฐ์ฒญํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค .

3. IMSI ์•”ํ˜ธํ™”๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

IMSI ์•”ํ˜ธํ™”๋Š” ์‚ฌ์šฉ์ž์˜ IMSI๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ํ•ด์ปค๋“ค์ด IMSI๋ฅผ ๊ฐ€๋กœ์ฑ„๋”๋ผ๋„ ์‹ค์ œ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. 5G ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์ด๋Ÿฌํ•œ IMSI ์•”ํ˜ธํ™”๊ฐ€ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒ๋˜์–ด ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค .

4. IMSI ์•”ํ˜ธํ™”์˜ ๋„์ž…์œผ๋กœ ๊ธฐ๋Œ€๋˜๋Š” ํšจ๊ณผ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ์‚ฌ์šฉ์ž ํ”„๋ผ์ด๋ฒ„์‹œ ๋ณดํ˜ธ: IMSI๊ฐ€ ์•”ํ˜ธํ™”๋˜๋ฉด ํ•ด์ปค๋“ค์ด ์‚ฌ์šฉ์ž์˜ ์œ„์น˜๋‚˜ ์‹ ์›์„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ๊ฐ•ํ™”: IMSI ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด IMSI ์บ์ฒ˜์™€ ๊ฐ™์€ ์žฅ๋น„์˜ ํšจ๊ณผ๋ฅผ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ: ์‚ฌ์šฉ์ž๋“ค์€ ๋ณด๋‹ค ์•ˆ์ „ํ•œ ํ†ต์‹  ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ์‹œ๋‚˜๋ฆฌ์˜ค

  1. ํด๋ผ์ด์–ธํŠธ๋Š” IMSI๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†ก
  2. ์„œ๋ฒ„๋Š” IMSI๋ฅผ ๋ฐ›์•„ ์ถœ๋ ฅ
  3. **์ค‘๊ฐ„์ž(MITM)**๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋ฅผ ๊ฐ์ฒญํ•˜์—ฌ IMSI๋ฅผ ํƒˆ์ทจ

1๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ (client.py)

import socket

HOST = 'localhost'
PORT = 9000
IMSI = "450081234567890"  # ์˜ˆ์‹œ IMSI

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    print(f"[CLIENT] Sending IMSI: {IMSI}")
    s.sendall(IMSI.encode())

2๏ธโƒฃ ์„œ๋ฒ„ (server.py)

import socket

HOST = 'localhost'  
PORT = 9000

with socket.socket(socket.AF\_INET, socket.SOCK\_STREAM) as s:  
s.bind((HOST, PORT))  
s.listen()  
conn, addr = s.accept()  
with conn:  
print(f"\[SERVER\] Connected by {addr}")  
data = conn.recv(1024)  
print(f"\[SERVER\] Received IMSI: {data.decode()}")

3๏ธโƒฃ ์ค‘๊ฐ„์ž (sniffer.py)

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์ฒญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์—ฌ ๋™์ผํ•œ ํฌํŠธ์— ์—ฐ๊ฒฐ๋œ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑ„๋Š” ์—ญํ• ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

import socket

'ํ”„๋ก์‹œ' ํ˜•ํƒœ๋กœ ์ค‘๊ฐ„์— ์œ„์น˜ํ•˜๋Š” ์Šค๋‹ˆํผ

SERVER\_HOST = 'localhost'  
SERVER\_PORT = 9000  
SNIFFER\_PORT = 9999 # ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•จ

์„œ๋ฒ„์— ๋จผ์ € ์—ฐ๊ฒฐ

server\_socket = socket.socket(socket.AF\_INET, socket.SOCK\_STREAM)  
server\_socket.connect((SERVER\_HOST, SERVER\_PORT))

ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹  ๋Œ€๊ธฐ

sniffer\_socket = socket.socket(socket.AF\_INET, socket.SOCK\_STREAM)  
sniffer\_socket.bind((SERVER\_HOST, SNIFFER\_PORT))  
sniffer\_socket.listen()  
print("\[SNIFFER\] Waiting for client...")

client\_conn, addr = sniffer\_socket.accept()  
print(f"\[SNIFFER\] Client connected from {addr}")  
data = client\_conn.recv(1024)

print(f"\[SNIFFER\] Intercepted IMSI: {data.decode()}")

์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ

server\_socket.sendall(data)

client\_conn.close()  
server\_socket.close()  
sniffer\_socket.close()

๐Ÿ”„ ์‹คํ–‰ ์ˆœ์„œ

  1. server.py ์‹คํ–‰ → ์„œ๋ฒ„ ๋Œ€๊ธฐ
  2. sniffer.py ์‹คํ–‰ → ์ค‘๊ฐ„์ž ๋Œ€๊ธฐ
  3. client.py ์ˆ˜์ •ํ•˜์—ฌ PORT = 9999๋กœ ๋ฐ”๊พธ๊ณ  ์‹คํ–‰

๐Ÿ” ๊ตํ›ˆ

IMSI์™€ ๊ฐ™์€ ์ค‘์š” ์ •๋ณด๋Š” ๋ฐ˜๋“œ์‹œ ์•”ํ˜ธํ™”(TLS, HTTPS ๋“ฑ) ๋œ ์ฑ„๋„๋กœ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋„คํŠธ์›Œํฌ ์ค‘๊ฐ„์—์„œ ๋ˆ„๊ตฌ๋‚˜ ๋‚ด์šฉ์„ ๊ฐ€๋กœ์ฑ„๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•