우리는 한번이라도 VPN을 사용한 적이 있을 것 이다. VPN과 프록시는 우리를 숨겨준다.
해커들도 이런 방법을 사용한다. VPN을 사용하거나, 프록시 아님 툴들을 직접 만들거나 직접 서버를 구축하거나...
여러가지 방법을 사용해서 자신을 숨긴다.
세계의 모든 폐킷에서는 IP주소가 있다. IP 주소를 추적하는 것도 출발지의 IP주소를 찾아내는 것 이다.
어렵다
위에서 말했듯이 보통 VPN 혹은 프록시를 사용해서 IP주소를 숨기기 때문이다.
그래도 일단 알아보자.
메일을 활용하기
메일로 IP 주소를 추적하는 방법은 많이 사용되고 있다.
일단 메일의 오리지널을 파싱해보자
몇일 전 노션에게 받은 메일 아무거나 확인하였다.
더보기에서 원본 메일을 확인하면
이렇게 나와있다.
Delivered-To: wndmsrla1234@gmail.com
Received: by 2002:a05:7300:b61c:b0:d7:5718:89 with SMTP id cw28csp3243795dyb;
Mon, 28 Aug 2023 06:23:33 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGz5gFoTrl+J5iLipspI/FkhIniVk4Hd+WwzKVwjclItNx93nFKWZa8NjPlg6RsZu+Ab1Rq
X-Received: by 2002:a17:902:9a0b:b0:1c0:ec0a:316a with SMTP id v11-20020a1709029a0b00b001c0ec0a316amr3462349plp.36.1693229013270;
Mon, 28 Aug 2023 06:23:33 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1693229013; cv=none;
d=google.com; s=arc-20160816;
b=nOHGgyans3gDEHfulIlmFjoIDY9ysj0q9eaA3Eqxir97JZzeUL9rFeTjBQjXS69dOs
MTz5ABXDERp9/wvS1RNLj9ou9818xycHzsp8FwVfTuTpudOd61gSlOzW4GR9WxHxWuBI
Za8/u+poDuOOKNhRaCBNgwwm6Ah+qVxw0qmHzX9BPr+DuHYmnBsGM+YFUBa7yn+QPYKZ
hhV0fYXt4AYgbjFyLQffbe5qnM+wqZriahtv2CcqgKbka2dEnp+XNIsjDMFI5EZa6Kkh
9ALBlWnDgSq7ML+SWGd06/mM4vFTSzkD+4YNjN8PYCW9nKPXmtM+PJ/zvrzO77hILGCR
T7jA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=list-id:list-unsubscribe:to:subject:mime-version:message-id:from
:date:dkim-signature;
bh=WbPssBpfmj4lfvzTpIEsNVKCI+pac2ow4ZQcugDlj1A=;
fh=Rp54cSrKyJ5wPM6G3l4n3FU/pN3WfQbucHIVBSB7kAE=;
b=xIG0E2cwa0+kZPm/5IIL1mMYuObiw5oyTRjkbG2WDYTU+A0xXKZSqsouFYj0agRd3/
9V0GORm7zQA52xINHMjJEoRLoACzzYd21C0RYv0OM/BA+AkrY718HhZiKdaDGCX1dyT9
MT1wginPIXQQow+T7IVToOWn7wT1KUfUitW9P+srtHRY+lTWvWD9LaIe88XXAornfd98
576VpvpCnTHU8NqOlBzjGiG4JA3y06pTwBX+olBf1+rRhA8/EdUxt0AcuQ+IzGczhBwQ
xX0LO56W9Wq/2d4nhBc4tzUwJ64v6CrwfRGpvt61NcZkO5gVN3PyXl5ZxMoAR5UHG3e8
cCEA==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@mail.notion.so header.s=scph0819 header.b=0ShtrEZz;
spf=pass (google.com: domain of msprvs1=19604xqmtcuey=bounces-268494@mail.notion.so designates 147.253.217.49 as permitted sender) smtp.mailfrom="msprvs1=19604xqMtcUEy=bounces-268494@mail.notion.so";
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=notion.so
Return-Path: <msprvs1=19604xqMtcUEy=bounces-268494@mail.notion.so>
Received: from mta-253-217-49.notion.so.sparkpostmail.com (mta-253-217-49.notion.so.sparkpostmail.com. [147.253.217.49])
by mx.google.com with ESMTPS id c13-20020a170902d48d00b001c1eed8a336si1550874plg.167.2023.08.28.06.23.32
for <wndmsrla1234@gmail.com>
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Mon, 28 Aug 2023 06:23:33 -0700 (PDT)
Received-SPF: pass (google.com: domain of msprvs1=19604xqmtcuey=bounces-268494@mail.notion.so designates 147.253.217.49 as permitted sender) client-ip=147.253.217.49;
Authentication-Results: mx.google.com;
dkim=pass header.i=@mail.notion.so header.s=scph0819 header.b=0ShtrEZz;
spf=pass (google.com: domain of msprvs1=19604xqmtcuey=bounces-268494@mail.notion.so designates 147.253.217.49 as permitted sender) smtp.mailfrom="msprvs1=19604xqMtcUEy=bounces-268494@mail.notion.so";
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=notion.so
X-MSFBL: AsO6uUuaR5U6L13yXzaGb69P561YL6viCk8YSmmC0o8=|eyJzdWJhY2NvdW50X2l kIjoiMCIsImN1c3RvbWVyX2lkIjoiMjY4NDk0IiwiciI6InduZG1zcmxhMTIzNEB nbWFpbC5jb20iLCJtZXNzYWdlX2lkIjoiNjRlN2Q0OWZlYzY0ODBmYmJhYjkiLCJ 0ZW5hbnRfaWQiOiJzcGMifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.notion.so; s=scph0819; t=1693229012; i=@mail.notion.so; bh=WbPssBpfmj4lfvzTpIEsNVKCI+pac2ow4ZQcugDlj1A=; h=Content-Type:Date:From:Message-Id:Subject:To:List-Unsubscribe:
From:To:Cc:Subject; b=0ShtrEZz/C+Utbezbrbcheaacy2zDr+Kgx7JbE2Rr2Mprs63oDBQKNT2lIZYjozF3
+Kpc+LvdhYBXjBdPpA56VKb09+mvD/mCjJadm0pS1T9Mri10oXdX7n0c7zUtaRiqsb
xUXv6GR7vR4JzG7D3hDMbJSpdXAzRQVOKMwFZ1YE=
Authentication-Results: gg.mta1vsmtp.cc.prd.sparkpost smtp.user=<hidden>; auth=pass (LOGIN)
Received: from [104.154.232.87] ([104.154.232.87:38696] helo=localhost)
by gg.mta1vsmtp.cc.prd.sparkpost (envelope-from <team@mail.notion.so>) (ecelerity 4.4.1.18016 r(msys-ecelerity:tags/4.4.1.9)) with ESMTPSA (cipher=AES-128-GCM) id AB/9B-30857-4DF9CE46; Mon, 28 Aug 2023 13:23:32 +0000
Content-Type: multipart/alternative; boundary="837ac82e496ef597fffa7ee3a4424dbac96a3b06b706f6058b220a835b1c"; charset="utf-8"
Date: Mon, 28 Aug 2023 13:23:31 +0000
From: Notion Team <team@mail.notion.so>
Message-Id: <dgTv2AUBAJ-2lymetpcpAYo8UFIdZtcvGDCco4Tm8g.1693229011@mail.notion.so>
-- 중략 --
흠 좀 많이 복잡하다...
일단 메일의 구조를 알아봐야한다.
메일은 여러 서버를 거쳐서 최종적으로 전달된다. 그 과정들이 기록되어 있다.
1차 메일 서버 정보
Received: from [104.154.232.87] ([104.154.232.87:38696] helo=localhost)
by gg.mta1vsmtp.cc.prd.sparkpost (envelope-from <team@mail.notion.so>) (ecelerity 4.4.1.18016 r(msys-ecelerity:tags/4.4.1.9))
with ESMTPSA (cipher=AES-128-GCM) id AB/9B-30857-4DF9CE46;
Mon, 28 Aug 2023 13:23:32 +0000
Content-Type: multipart/alternative; boundary="837ac82e496ef597fffa7ee3a4424dbac96a3b06b706f6058b220a835b1c"; charset="utf-8"
Date: Mon, 28 Aug 2023 13:23:31 +0000
From: Notion Team <team@mail.notion.so>
Message-Id: <dgTv2AUBAJ-2lymetpcpAYo8UFIdZtcvGDCco4Tm8g.1693229011@mail.notion.so>
1차적으로 서버에 메일을 저장하기 위해서 메일을 저장하는 단계이다.
from [104.154.232.87] : 이 부분이 104.154.232.87에서
by : 부분이 gg.mta1vsmtp.cc.prd.sparkpost 라는 메일 서버에게 보냈고, 발신자의 실제 emali 주소가 (envelope-from <team@mail.notion.so>) 라는 부분에서 보여준다.
2차 메일 서버 정보
Received: from mta-253-217-49.notion.so.sparkpostmail.com (mta-253-217-49.notion.so.sparkpostmail.com. [147.253.217.49])
by mx.google.com with ESMTPS id c13-20020a170902d48d00b001c1eed8a336si1550874plg.167.2023.08.28.06.23.32
for <wndmsrla1234@gmail.com>
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Mon, 28 Aug 2023 06:23:33 -0700 (PDT)
Received-SPF: pass (google.com: domain of msprvs1=19604xqmtcuey=bounces-268494@mail.notion.so designates 147.253.217.49 as permitted sender) client-ip=147.253.217.49;
Authentication-Results: mx.google.com;
dkim=pass header.i=@mail.notion.so header.s=scph0819 header.b=0ShtrEZz;
spf=pass (google.com: domain of msprvs1=19604xqmtcuey=bounces-268494@mail.notion.so designates 147.253.217.49 as permitted sender) smtp.mailfrom="msprvs1=19604xqMtcUEy=bounces-268494@mail.notion.so";
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=notion.so
X-MSFBL: AsO6uUuaR5U6L13yXzaGb69P561YL6viCk8YSmmC0o8=|eyJzdWJhY2NvdW50X2l kIjoiMCIsImN1c3RvbWVyX2lkIjoiMjY4NDk0IiwiciI6InduZG1zcmxhMTIzNEB nbWFpbC5jb20iLCJtZXNzYWdlX2lkIjoiNjRlN2Q0OWZlYzY0ODBmYmJhYjkiLCJ 0ZW5hbnRfaWQiOiJzcGMifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.notion.so; s=scph0819; t=1693229012; i=@mail.notion.so; bh=WbPssBpfmj4lfvzTpIEsNVKCI+pac2ow4ZQcugDlj1A=; h=Content-Type:Date:From:Message-Id:Subject:To:List-Unsubscribe:
From:To:Cc:Subject; b=0ShtrEZz/C+Utbezbrbcheaacy2zDr+Kgx7JbE2Rr2Mprs63oDBQKNT2lIZYjozF3
+Kpc+LvdhYBXjBdPpA56VKb09+mvD/mCjJadm0pS1T9Mri10oXdX7n0c7zUtaRiqsb
xUXv6GR7vR4JzG7D3hDMbJSpdXAzRQVOKMwFZ1YE=
Authentication-Results: gg.mta1vsmtp.cc.prd.sparkpost smtp.user=<hidden>; auth=pass (LOGIN)
147.253.217.49 메일 서버로 전송되었다는것을 의미한다.
Received-SPF는 메일 서버와 IP주소를 등록하고 IP주소를 직접 비교해 스팸 메일의 여부를 판단해 검사한 결과를 보여준다.
값 | 내용 |
None | 판정 불가 |
Neutral | 메일 위조 여부 판단을 원치 않음. None과 같은 취급 |
Pass | 위변조 여부 없음. 발신자가 메일에 대한 책임을 갖는다. |
Fail | 메일 헤더가 위 변조되었고, 서버의 도메인, IP 일치 안함 |
Sotffail | Pass Fali의 중간이며 적법하게 위조될 가능성이 있다를 나타낸다. |
TempError | SPF 결과값 확인 중 문제 발생 |
PermError | SPF값이 발신자 정보를 확인하는데 사용이 불가능한 상태 |
3차 메일 서버 정보
X-Received: by 2002:a17:902:9a0b:b0:1c0:ec0a:316a with SMTP id v11-20020a1709029a0b00b001c0ec0a316amr3462349plp.36.1693229013270;
Mon, 28 Aug 2023 06:23:33 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1693229013; cv=none;
d=google.com; s=arc-20160816;
b=nOHGgyans3gDEHfulIlmFjoIDY9ysj0q9eaA3Eqxir97JZzeUL9rFeTjBQjXS69dOs
MTz5ABXDERp9/wvS1RNLj9ou9818xycHzsp8FwVfTuTpudOd61gSlOzW4GR9WxHxWuBI
Za8/u+poDuOOKNhRaCBNgwwm6Ah+qVxw0qmHzX9BPr+DuHYmnBsGM+YFUBa7yn+QPYKZ
hhV0fYXt4AYgbjFyLQffbe5qnM+wqZriahtv2CcqgKbka2dEnp+XNIsjDMFI5EZa6Kkh
9ALBlWnDgSq7ML+SWGd06/mM4vFTSzkD+4YNjN8PYCW9nKPXmtM+PJ/zvrzO77hILGCR
T7jA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=list-id:list-unsubscribe:to:subject:mime-version:message-id:from
:date:dkim-signature;
bh=WbPssBpfmj4lfvzTpIEsNVKCI+pac2ow4ZQcugDlj1A=;
fh=Rp54cSrKyJ5wPM6G3l4n3FU/pN3WfQbucHIVBSB7kAE=;
b=xIG0E2cwa0+kZPm/5IIL1mMYuObiw5oyTRjkbG2WDYTU+A0xXKZSqsouFYj0agRd3/
9V0GORm7zQA52xINHMjJEoRLoACzzYd21C0RYv0OM/BA+AkrY718HhZiKdaDGCX1dyT9
MT1wginPIXQQow+T7IVToOWn7wT1KUfUitW9P+srtHRY+lTWvWD9LaIe88XXAornfd98
576VpvpCnTHU8NqOlBzjGiG4JA3y06pTwBX+olBf1+rRhA8/EdUxt0AcuQ+IzGczhBwQ
xX0LO56W9Wq/2d4nhBc4tzUwJ64v6CrwfRGpvt61NcZkO5gVN3PyXl5ZxMoAR5UHG3e8
cCEA==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@mail.notion.so header.s=scph0819 header.b=0ShtrEZz;
spf=pass (google.com: domain of msprvs1=19604xqmtcuey=bounces-268494@mail.notion.so designates 147.253.217.49 as permitted sender) smtp.mailfrom="msprvs1=19604xqMtcUEy=bounces-268494@mail.notion.so";
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=notion.so
Return-Path: <msprvs1=19604xqMtcUEy=bounces-268494@mail.notion.so>
2002:a17:902:9a0b:b0:1c0:ec0a:316a 에서 메일이 수신되었다는 것을 보여준다.
4차 메일 서버 정보
Delivered-To: wndmsrla1234@gmail.com
Received: by 2002:a05:7300:b61c:b0:d7:5718:89 with SMTP id cw28csp3243795dyb;
Mon, 28 Aug 2023 06:23:33 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGz5gFoTrl+J5iLipspI/FkhIniVk4Hd+WwzKVwjclItNx93nFKWZa8NjPlg6RsZu+Ab1Rq
2002:a05:7300:b61c:b0:d7:5718:89 여기서에 수신되었고, 최종적으로 wndmsrla1234@gmail.com 에 전송되었다는것을 보여준다.
P2P 서비스 이용하기
음 P2P 서비스가 뭐냐면 카카오톡, 스카이프, 네이트온 같은 메신저이다.
P2P는 상대방과 통신을 직접 하기 때문에 IP 주소 노출에 위험하다.
P2P의 통신 원리는 이렇다.
일반 텍스트 문서는 App Engine, 즉 서버에 전송을 해서 소통을 한다.
하지만 대용량 파일이나 미디어 파일은 브라우져 서로 직접 통신이 이루어진다. 이 점을 이용하면 된다.
전송되는 패킷을 분석하면 추적하는 방법이 있다.
클라이언트간의 직접 미디어 파일을 주고받는 경우 클라이언트 간에 세션을 직접 생성한다.
이때 netstat혹은 패킷 분석으로도 ip를 추적할 수 있다.
웹을 통한 IP 추적
사실 너무 당연한 이야기긴 한데 해커가 웹사이트를 공격했다면 로그를 통해서 쉽게 IP를 추적할 수 있다.
물론 Telnet 같은 것도 로그를 통해서 IP확인이 가능하다.
Traceroute
Traceroute는 패킷이 지나가는 경로의 라우터들을 보여주는 명령어 이다.
이때 상대방에게 패킷을 보내서 라우터들의 IP주소를 확인 할 수 있다.
한번 DHCP, DNS 서버를 구성하겠다.
여기서 DHCP란 우리가 지금도 사용중인 인터넷의 IP, 서브넷마스크, 기본 게이트웨이 등의 설정들을 자동적으로 제공해주는 UDP 기반 비연결형 서비스 프로토콜을 말한다. 우리가 직접 IP를 할당는 작업등을 하면 매우 불편할것이다.
작동 원리는 이렇다.
장비가 네트워크에 연결되면 클라이언트는 DHCP Discover 메세지를 브로드캐스트 한다.
DHCP서버는 요청을 받고 사용가능한 IP 하나를 골라 다시 IP주소와 네트워크 연결 정보 등을 브로드캐스트를 한다.
DHCP의 응답을 받은 클라이언트는 DHCP 서버를 선택하고 응답 request를 보낸다.
DHCP서버는 request 메시지를 받고 클라이언트에게 네트워크를 할당하겠다는 ACK를 전송한다.
클라이언트는 DHCP 서버로부터 받은 정보를 사용해서 IP주소를 갖고 통신한다.
전체적인 모습은 이렇게 구성했다.
DNS는 이렇게 설정 했다.
DHCP는 이렇게 설정 했다.
Web 서버는 이렇게 구성하였다.
이렇게 웹 서버 html 파일도 구성하였다.
여기서 PC 0에서 웹 서버로 Tracer 명령어를 하면
pc와 웹 서버는 스위치 하나로 연결이 되어 있어 그냥 엔드포인트의 IP주소만 나온다.
여러가지 툴
Open Visual Trace Route
그냥 겁나 신기하다. 지구본에서 패킷의 위치를 보여준다
Sam Spade
whois, ping, dns nslookup등 dig 명령어들을 사용할 수 있다.
IPlogger
일반적인 웹 사이트로 속이고 요청을 보내면 툴에 로그를 남기고 정상적인 웹 사이트로 연결되는 원리이다.
내가 만든 URL에 접속하면 이런식으로 로그가 남는다.
'Network' 카테고리의 다른 글
WAF (Web Application Firewall) (0) | 2023.11.15 |
---|---|
Who is Whois? (0) | 2023.08.26 |
네트워크 계층 구조란? (OSI 7계층) (0) | 2023.08.18 |
프로토콜이란? (2) | 2023.08.17 |
패킷트레이서 사용해보기 (0) | 2023.08.15 |