트래픽을 가로채는 방법. 최고의 펜 테스터 도구: 스니퍼 및 패킷 조작

공용 Wi-Fi 네트워크도 오늘날 매우 인기를 얻고 있습니다. 레스토랑, 체육관, 쇼핑몰, 지하철, 호텔, 사립 병원 및 진료소, 아파트 및 콘도미니엄에서 볼 수 있습니다. 많은 사람들이 모이는 거의 모든 곳에서 볼 수 있습니다.

이러한 네트워크에는 고유한 특성이 있습니다. 연결하는 데 암호가 필요하지 않은 개방형 Wi-Fi 네트워크인 경우가 많습니다. 이러한 네트워크 작업을 위한 추가 보안 규칙이 있습니까?

예, 개방형 Wi-Fi 네트워크를 사용할 때 다음 사항을 잘 이해해야 합니다.

  • 모든 데이터는 전파에 의해 전송됩니다. 즉, 모든 사람이 액세스할 수 없는 유선과 달리 전파는 범위 내에 있는 모든 사람이 가로챌 수 있습니다.
  • 개방형 네트워크에서 데이터는 암호화되지 않습니다.

첫 번째 요점으로 모든 것이 명확하다고 생각합니다. 컴퓨터와 Wi-Fi 카드가 있는 사람이 충분히 가까우면 무선 액세스 포인트와 모든 클라이언트 간에 전송되는 모든 트래픽을 캡처하고 저장할 수 있습니다.

두 번째 요점은 전송 데이터의 암호화에 대해 명확히 할 필요가 있습니다. 예를 들어 사이트와 같이 HTTPS 프로토콜(즉, 보안 프로토콜)을 사용하는 사이트를 열면 이 사이트에서 사용자에게 전송되는 데이터가 암호화됩니다. HTTP 프로토콜을 사용하여 웹사이트를 열면 전송된 모든 데이터: 방문한 페이지, 남긴 댓글, 웹 브라우저에서 받은 쿠키 - 이 데이터는 암호화되지 않은 형태로 전송됩니다. 따라서 비밀번호가 필요한 Wi-Fi 액세스 포인트에 연결하면 전송된 트래픽이 다시 암호화됩니다. 즉, HTTPS 프로토콜로 웹사이트를 열어도 전송되는 트래픽은 두 번 암호화됩니다(웹 브라우저에서 웹 서버로 첫 번째 전송할 때와 반대 방향으로 전송할 때 두 번째 장치에서 액세스 포인트 및 역방향). 그리고 HTTP 프로토콜에서 웹사이트를 열면 전송된 트래픽이 한 번만 암호화됩니다(장치에서 액세스 포인트로 또는 그 반대로 전송하는 동안에만).

그러나 개방형 핫스팟은 트래픽을 암호화하지 않습니다. 오픈 액세스 포인트를 사용하고 HTTP 프로토콜에서 실행되는 웹 사이트를 열면 데이터가 일반 텍스트로 전송되고 가까운 사람이 캡처하여 저장할 수 있습니다. HTTPS 프로토콜에서 사이트를 열면 이 데이터가 암호화되지만 어떤 사이트를 열었는지는 계속 볼 수 있습니다(비록 어떤 페이지와 무엇을 입력했는지(예: 어떤 댓글을 남겼는지는 알 수 없음)).

따라서 개방형 무선 네트워크는 도청되기 쉽다는 것을 기억해야 합니다.

개방형 Wi-Fi 네트워크에서 트래픽 가로채기

성공적인 공격을 위해서는 Linux 컴퓨터(예: Kali Linux 또는 BlackArch 사용)와 Wi-Fi 카드가 필요합니다.

무선 인터페이스의 이름부터 살펴보겠습니다.

보시다시피 몇 가지 무선 인터페이스가 있습니다. wlp0s20f0u2.

무선 인터페이스를 모니터 모드로 전환합니다.

sudo ip link set INTERFACE down sudo iw INTERFACE set 모니터 제어 sudo ip link set INTERFACE up

이전 명령에서 대신 상호 작용시스템에 있는 무선 인터페이스의 이름을 입력해야 합니다. 예를 들어 wlp0s20f0u2의 경우 명령은 다음과 같습니다.

sudo ip link set wlp0s20f0u2 down sudo iw wlp0s20f0u2 set 모니터 제어 sudo ip link set wlp0s20f0u2 up

Wireshark에서 캡처한 데이터 파일을 엽니다.

다른 데이터를 강조 표시하려면 Wireshark 필터가 필요합니다. 여기에서는 필터 중 일부만 사용하는 예를 보여 드리겠습니다. 유용한 Wireshark 필터 모음을 탐색하는 것이 좋습니다.

캡처 품질을 평가하기 위해 TCP 프로토콜 분석 결과를 표시하는 필터로 시작할 수 있습니다.

예를 들어:

Tcp.analysis.duplicate_ack_num == 1

이 필터는 중복된 ACK 플래그가 있는 프레임에 대한 정보를 출력합니다. 이러한 프레임이 많다는 것은 클라이언트와 액세스 포인트 간의 통신 문제를 나타낼 수 있습니다.

이전 세그먼트가 캡처되지 않은 프레임을 표시하기 위한 필터:

Tcp.analysis.ack_lost_segment

이것은 정보가 처음부터 가로채지 않기 때문에 데이터 캡처를 시작할 때 정상입니다. 그러나 이 오류가 나중에 자주 발생하면 액세스 포인트 또는 클라이언트에서 너무 멀리 떨어져 있고 전송하는 데이터의 일부를 캡처하지 못하는 것입니다.

재전송(재전송)된 프레임을 표시하려면:

Tcp.analysis.retransmission

이러한 프레임의 수가 많다는 것은 클라이언트와 AP 간의 연결이 좋지 않고 동일한 데이터를 반복해서 보내야 하는 경우가 많다는 것을 나타낼 수 있습니다.

필터 사용

ARP 트래픽을 볼 수 있습니다. 현재 로컬 네트워크에 연결된 장치 수, 장치의 IP 주소 및 MAC 주소를 분석하는 것이 편리합니다. ...

필터 사용

전송된 모든 DNS 요청을 볼 수 있습니다.

이러한 요청 덕분에 사용자가 방문한 사이트(이 사이트가 HTTPS를 사용하더라도!)와 요청이 이루어진 온라인 서비스를 알 수 있습니다.

예를 들어 스크린샷에서 온라인 영화관 Netflix, Facebook, 다양한 Google 서비스의 주소를 볼 수 있습니다.

HTTP 트래픽을 필터링하려면 다음을 필터링합니다.

여기에서 많은 흥미로운 정보를 찾을 수 있습니다. 예를 들어 API 키, 장치 식별자 등을 포함하여 서비스 및 전송된 데이터에 대한 요청을 볼 수 있습니다.

전달된 모든 매개변수와 함께 방문한 URL을 볼 수 있습니다.

인터넷에서 다운로드하여 연 파일을 볼 수 있습니다.

전송된 모든 파일을 저장할 수 있습니다. 이렇게 하려면 해당 패키지가 포함된 패키지를 마우스(1)로 선택한 다음 세부 정보가 포함된 중간 창에서 맨 아래로 스크롤하여 데이터 필드를 찾은 다음 마우스 오른쪽 버튼을 클릭하여 상황에 맞는 메뉴를 불러옵니다. (2), 컨텍스트 메뉴에서 선택 선택한 패킷 바이트 내보내기(3) - 선택한 패킷의 바이트 내보내기:

파일 이름을 입력하고 위치를 선택한 후 저장합니다.

누군가 Windows를 업데이트하고 있습니다.

사용자에게 설정된 쿠키 또는 사용자에게 전송된 쿠키도 볼 수 있습니다.

필터 사용

Http.cookie

쿠키가 전달된 HTTP 요청을 볼 수 있습니다.

그리고 필터로

Http.set_cookie

서버가 사용자의 브라우저에 쿠키를 설정한 요청을 볼 수 있습니다.

이상한 급류를 다운로드하는 이웃:

POST 메서드로 전송된 데이터도 볼 수 있습니다.

업로드된 이미지를 검색하려면:

Http.content_type에 "이미지"가 포함되어 있습니다.

특정 유형의 이미지를 검색하려면:

Http.content_type에는 "gif"가 포함되어 있습니다. http.content_type에는 "jpeg"가 포함되어 있습니다. http.content_type에는 "png"가 포함되어 있습니다.

특정 유형의 파일을 검색하려면:

Http.content_type은 "텍스트"를 포함합니다. http.content_type은 "xml"을 포함합니다. http.content_type은 "html"을 포함합니다. http.content_type은 "json"을 포함합니다. http.content_type은 "javascript"를 포함합니다. http.content_type은 "x-www-form-urlencode" http를 포함합니다. content_type에는 "압축"이 포함됩니다. http.content_type에는 "응용 프로그램"이 포함됩니다.

Wireshark에서 특정 유형의 파일 가져오기 요청을 검색합니다. 예를 들어, 전송된 ZIP 아카이브를 검색하려면:

Http.request.uri에는 "zip"이 포함되어 있습니다.

대신에 http.request.uri더 높은 정확도를 위해 필터를 사용할 수 있습니다. http.request.uri.path또는 http.request.uri.query, 예를 들어 JPG 파일 다운로드 요청을 검색하려면(그림 링크):

Http.request.uri.path에 "jpg"가 포함되어 있습니다.

POST 메서드로 제출된 데이터만 표시하는 필터:

Http.request.method == "포스트"

GET 메서드로 보낸 데이터만 표시하는 필터:

Http.request.method == "받기"

특정 사이트(호스트)에 대한 요청 검색:

http.host == " "

이름의 일부로 특정 사이트에 대한 요청 검색:

Http.host에는 "here.partial.name"이 포함되어 있습니다.

결론

이제 암호화를 사용하지 않는 애플리케이션과 사이트의 수가 급격히 감소하고 있습니다. 따라서 이러한 차단의 위험은 매년 감소합니다. 그럼에도 불구하고 거기에 있습니다.

HTTPS를 사용하는 사이트라도 자발적으로 데이터를 노출할 수 있습니다. 예를 들어:

booking.com의 데이터는 암호화되지 않은 형태로 사용자로부터 전송되므로 이 링크를 가로챌 수 있음을 알 수 있습니다.

iPhone 응용 프로그램은 보안 연결을 사용하지 않고 일부(오디오?) 파일을 지속적으로 다운로드합니다.

인기 있는(일부 지역에서) qq.com은 암호화를 사용하지 않거나 자체 알고리즘을 사용합니다.

이러한 차단에 대한 보장된 보호는 신뢰할 수 있는 VPN 서비스를 사용하는 것입니다. 신뢰할 수 있는 VPN 서비스는 직접 설정한 서비스 또는 회사 네트워크의 VPN으로 간주할 수 있습니다.

네트워크 트래픽을 가로채는 방법

네트워크 분석 프로그램을 사용하여 네트워크를 청취하는 것이 데이터를 가로채는 가장 쉬운 첫 번째 방법입니다.

네트워크 도청을 방지하기 위해 AntiSniff와 같은 특수 프로그램이 사용되어 네트워크 트래픽을 도청하고 있는 네트워크 컴퓨터를 탐지할 수 있습니다.

문제를 해결하기 위한 Antisnifer 프로그램은 네트워크에 청취 장치가 있다는 특별한 표시를 사용합니다. 스니퍼 컴퓨터의 네트워크 카드는 특수 청취 모드에 있어야 합니다. 수신 모드에 있는 동안 네트워크 컴퓨터는 테스트 중인 호스트의 주소로 전송된 IP 데이터그램에 특별한 방식으로 반응합니다. 예를 들어, 수신 호스트는 일반적으로 호스트 주소로 전송된 데이터그램에 국한되지 않고 들어오는 모든 트래픽을 처리합니다. AntiSniff가 인식할 수 있는 의심스러운 호스트 동작의 다른 징후가 있습니다.

의심할 여지 없이 도청은 네트워크를 통해 전송된 암호, 네트워크 컴퓨터 주소, 기밀 데이터, 문자 등 많은 유용한 정보를 얻을 수 있기 때문에 침입자의 관점에서 매우 유용합니다. 그러나 간단한 도청은 해커가 데이터를 수정하고 변조하기 위해 두 호스트 간의 네트워크 통신을 방해하는 것을 방지합니다. 이러한 문제를 해결하기 위해서는 보다 정교한 기술이 필요하다.

두 호스트 A와 B 사이의 네트워크 통신 프로세스를 가로채서 닫기 위해 공격자는 호스트 A와 B에 가짜 ARP(Address Resolution Protocol) 메시지를 전송하여 상호 작용하는 호스트의 IP 주소를 자신의 IP 주소로 스푸핑할 수 있습니다.

쌀. 1 스푸핑 ARP 요청

해커가 ARP를 사용하여 호스트 A와 B 사이의 네트워크 통신을 가로채는 방법을 살펴보겠습니다.

호스트 A와 B 사이의 네트워크 트래픽을 가로채기 위해 해커는 A와 B가 메시지를 교환할 때 이 가짜 IP 주소를 사용하도록 이러한 호스트에 자신의 IP 주소를 집중시킵니다. 해커는 자신의 IP 주소를 도용하기 위해 다음과 같은 작업을 수행합니다.

  • 공격자는 예를 들어 W2RK 패키지의 nbtstat 명령을 사용하여 호스트 A와 B의 MAC 주소를 확인합니다.
  • 공격자는 호스트의 IP 주소를 컴퓨터의 MAC 주소로 변환하라는 요청에 대한 가짜 ARP 응답인 호스트 A와 B의 식별된 MAC 주소로 메시지를 보냅니다. 호스트 A는 호스트 B의 IP 주소가 공격자 컴퓨터의 MAC 주소와 일치함을 알립니다. 호스트 B는 호스트 A의 IP 주소도 공격자의 MAC 주소와 일치한다고 알려줍니다.
  • 호스트 A와 호스트 B는 수신한 MAC 주소를 ARP 캐시에 입력한 다음 이를 사용하여 서로 메시지를 보냅니다. A와 B의 IP 주소는 공격자의 컴퓨터의 MAC 주소에 해당하므로 호스트 A와 B는 아무 의심 없이 자신의 메시지로 원하는 모든 작업을 수행할 수 있는 중개자를 통해 통신합니다.

이러한 공격을 방어하기 위해 네트워크 관리자는 네트워크 컴퓨터의 MAC 주소 및 IP 주소 매핑 테이블이 있는 데이터베이스를 유지 관리해야 합니다.

UNIX 네트워크에서 이러한 유형의 가짜 ARP 공격은 arpredirect와 같은 네트워크 트래픽을 모니터링하고 제어하는 ​​시스템 유틸리티를 사용하여 구현할 수 있습니다. 불행히도 Windows 네트워크에서는 이러한 강력한 유틸리티가 구현되지 않은 것으로 보입니다. 예를 들어, GrabitAII 유틸리티는 네트워크 호스트 간의 트래픽 리디렉션을 위한 도구로 NTsecurity에서 사용할 수 있습니다. 그러나 GrabitAII 유틸리티의 기능에 대한 기본 테스트는 기능 구현에서 아직 완전한 성공과는 거리가 멀다는 것을 보여줍니다.

네트워크 트래픽을 가로채기 위해 공격자는 예를 들어 위조된 ICMP 리디렉션 메시지를 사용하여 자신의 IP 주소로 네트워크 라우터의 실제 IP 주소를 스푸핑할 수 있습니다. 호스트 A는 RFC-1122에 따라 수신된 리디렉션 메시지를 다른 호스트(예: B)로 보낸 데이터그램에 대한 응답으로 해석해야 합니다. 호스트 A는 수신된 리디렉션 메시지의 내용을 기반으로 리디렉션 메시지에 대한 조치를 결정합니다. 데이터그램 리디렉션이 새 경로의 A에서 B로 리디렉션에 설정되어 있으면 호스트 A가 수행할 작업입니다.

쌀. 2 거짓 라우팅

잘못된 라우팅을 수행하기 위해 공격자는 호스트 A가 위치한 로컬 네트워크의 조직에 대한 몇 가지 세부 정보, 특히 트래픽이 호스트 A에서 B로 전송되는 라우터의 IP 주소를 알아야 합니다. 이를 알고 공격자는 IP - 보낸 사람의 주소가 라우터의 IP 주소로 정의되고 대상이 호스트 A인 IP 데이터그램을 생성합니다. 또한 데이터그램에는 새 라우터의 주소 필드가 IP 주소로 설정된 ICMP 리디렉션 메시지가 포함됩니다. 공격자의 컴퓨터. 이러한 메시지를 받으면 호스트 A는 모든 메시지를 공격자 컴퓨터의 IP 주소로 보냅니다.

이러한 공격으로부터 보호하려면 호스트 A에서 ICMP 리디렉션 메시지 처리를 비활성화(예: 방화벽 사용)합니다. 이러한 유틸리티는 물론 네트워크 관리자가 경계하는 경우 설치 중에 제공되지 않은 로컬 네트워크에 나타난 추가 경로를 찾을 수 있습니다.

위의 가로채기 예(공격자의 능력이 제한되지 않음)는 데이터에 기밀 정보가 포함된 경우 네트워크를 통해 전송되는 데이터를 보호해야 할 필요성을 확신합니다. 네트워크 트래픽 가로채기로부터 보호하는 유일한 방법은 암호화 알고리즘 및 암호화 프로토콜을 구현하고 기밀 정보의 공개 및 대체를 방지하는 프로그램을 사용하는 것입니다. 이러한 문제를 해결하기 위해 암호화는 보안 프로토콜을 통해 전송되는 메시지의 신뢰성을 암호화, 서명 및 확인하는 수단을 제공합니다.

정보 교환을 보호하는 모든 암호화 방법의 실제 구현은 VPN(가상 사설망) 네트워크에 의해 제공됩니다.

TCP 연결 하이재킹

가장 정교한 네트워크 트래픽 가로채기 공격은 해커가 TCP 패킷을 생성하고 공격받은 호스트로 전송하여 호스트와의 현재 통신 세션을 중단하는 TCP 하이재킹입니다. 또한 중단된 TCP 연결을 복원하는 TCP 프로토콜의 기능을 사용하여 해커는 중단된 통신 세션을 가로채서 연결이 끊긴 클라이언트 대신 계속합니다.

TCP 연결 하이재킹 공격을 수행하기 위해 여러 가지 효율적인 유틸리티가 개발되었지만 모두 Unix 플랫폼용으로 구현되었으며 이러한 유틸리티는 웹 사이트의 소스 코드로만 제공됩니다. 따라서 TCP 연결을 가로채는 공격은 거의 사용되지 않습니다.

TCP(전송 제어 프로토콜)는 가상 통신 채널을 통해 논리적 연결을 설정할 수 있도록 하는 OSI 전송 계층의 기본 프로토콜 중 하나입니다. 패킷은 시퀀스 등록과 함께이 채널을 통해 송수신되고 패킷 흐름이 제어되며 손상된 패킷의 재전송이 구성되며 세션이 끝나면 통신 채널이 끊어집니다. TCP는 고급 메시지 및 연결 식별 시스템이 있는 TCP/IP 제품군의 유일한 기본 프로토콜입니다.

소프트웨어 배치 스니퍼 개요

모든 소프트웨어 스니퍼는 명령줄에서 실행을 지원하는 스니퍼와 그래픽 인터페이스가 있는 스니퍼의 두 가지 범주로 대략 나눌 수 있습니다. 동시에 이러한 기능을 모두 결합한 스니퍼가 있다는 점에 유의하십시오. 또한 스니퍼는 지원하는 프로토콜, 가로채는 패킷 분석의 깊이, 필터 구성 기능 및 다른 프로그램과의 호환성 가능성에서 서로 다릅니다.

일반적으로 그래픽 인터페이스가 있는 스니퍼의 창은 세 가지 영역으로 구성됩니다. 첫 번째는 캡처된 패킷의 요약을 표시합니다. 일반적으로 이 영역에는 최소 필드, 즉 패킷 캡처 시간이 표시됩니다. 패킷을 보낸 사람과 받는 사람의 IP 주소 패킷 소스 및 대상 MAC 주소, 소스 및 대상 포트 주소 프로토콜 유형(네트워크, 전송 또는 응용 프로그램 계층) 가로채는 데이터에 대한 일부 요약 정보입니다. 두 번째 영역에는 선택된 개별 패키지에 대한 통계 정보가 표시되고 마지막으로 세 번째 영역에는 패키지가 16진수 또는 ASCII 문자 형식으로 표시됩니다.

거의 모든 패킷 스니퍼를 사용하면 디코딩된 패킷을 분석할 수 있습니다(이 때문에 패킷 스니퍼를 패킷 분석기 또는 프로토콜 분석기라고도 함). 스니퍼는 캡처된 패킷을 계층 및 프로토콜별로 배포합니다. 일부 패킷 스니퍼는 프로토콜을 인식하고 가로채는 정보를 표시할 수 있습니다. 이러한 유형의 정보는 일반적으로 스니퍼 창의 두 번째 영역에 표시됩니다. 예를 들어, 모든 탐지기는 TCP 프로토콜을 인식할 수 있으며 고급 탐지기는 이 트래픽을 생성하는 응용 프로그램을 확인할 수 있습니다. 대부분의 프로토콜 분석기는 500개 이상의 서로 다른 프로토콜을 인식하고 이름으로 설명하고 디코딩할 수 있습니다. 스니퍼가 디코딩하고 화면에 표시할 수 있는 정보가 많을수록 수동으로 디코딩해야 하는 정보가 줄어듭니다.

패킷 분석기가 직면할 수 있는 문제 중 하나는 기본 포트 이외의 포트를 사용하여 프로토콜을 올바르게 식별할 수 없다는 것입니다. 예를 들어 보안을 향상시키기 위해 일부 잘 알려진 응용 프로그램은 기본값이 아닌 다른 포트를 사용하도록 구성할 수 있습니다. 따라서 웹 서버용으로 예약된 기존 포트 80 대신 이 서버를 포트 8088 또는 다른 포트로 강제로 재구성할 수 있습니다. 이러한 상황에서 일부 패킷 분석기는 프로토콜을 올바르게 판별하지 못하고 하위 계층 프로토콜(TCP 또는 UDP)에 대한 정보만 표시합니다.

차단된 트래픽에 대한 유용한 분석 정보가 포함된 보고서를 생성할 수 있는 플러그인 또는 내장 모듈로 소프트웨어 분석 모듈과 함께 제공되는 소프트웨어 스니퍼가 있습니다.

대부분의 패킷 스니퍼 소프트웨어의 또 다른 특징은 트래픽 캡처 전후에 필터를 구성하는 기능입니다. 필터는 주어진 기준에 따라 일반 트래픽에서 특정 패킷을 선택하므로 트래픽을 분석할 때 불필요한 정보를 제거할 수 있습니다.

많은 사용자는 폐쇄된 인터넷 리소스에 등록하거나 인증할 때 로그인과 비밀번호를 입력하고 ENTER를 누르면 이 데이터가 쉽게 가로챌 수 있다는 사실조차 깨닫지 못합니다. 매우 자주 그들은 보호되지 않은 형태로 네트워크를 통해 전송됩니다. 따라서 로그인하려는 사이트가 HTTP 프로토콜을 사용하는 경우 이 트래픽을 캡처하고 Wireshark를 사용하여 분석한 다음 특수 필터와 프로그램을 사용하여 암호를 찾고 해독하는 것이 매우 쉽습니다.

암호를 가로채기에 가장 좋은 곳은 네트워크의 코어로, 외부 리소스에 등록할 때 모든 사용자의 트래픽이 폐쇄된 리소스(예: 메일)로 이동하거나 인터넷에 액세스하기 위해 라우터 앞쪽으로 이동합니다. 우리는 거울을 설치하고 해커처럼 느낄 준비가 되었습니다.

1단계. Wireshark를 설치하고 실행하여 트래픽 캡처

때로는 트래픽을 캡처할 인터페이스만 선택하고 시작 버튼을 클릭하는 것으로 충분합니다. 우리의 경우 무선 네트워크를 통해 캡처를 수행하고 있습니다.

트래픽 캡처가 시작되었습니다.

2단계. 캡처된 POST 트래픽 필터링

브라우저를 열고 사용자 이름과 암호를 사용하여 모든 리소스에 로그인을 시도합니다. 승인 프로세스가 완료되고 사이트가 열리면 Wireshark에서 트래픽 캡처가 중지됩니다. 그런 다음 프로토콜 분석기를 열고 많은 수의 패킷을 확인합니다. 대부분의 IT 전문가는 이 단계에서 다음에 무엇을 해야 할지 몰라 포기합니다. 그러나 우리는 화면의 양식을 작성할 때 로컬 시스템에서 생성되고 "로그인" 또는 "인증" 버튼을 클릭할 때 원격 서버로 전송되는 POST 데이터를 포함하는 특정 패키지에 관심이 있습니다. 브라우저.

캡처된 패킷을 표시하기 위해 창에 특수 필터를 도입합니다. http.요구.방법 == "게시하다 "

수천 개의 패키지 대신 찾고 있는 데이터가 포함된 패키지 하나만 표시됩니다.

3단계. 사용자 이름과 비밀번호 찾기

마우스 오른쪽 버튼을 빠르게 클릭하고 메뉴에서 항목 선택 TCP Steam 팔로우


그런 다음 코드에서 페이지 내용을 복원하는 새 창에 텍스트가 나타납니다. 암호 및 사용자 이름에 해당하는 "암호" 및 "사용자" 필드를 찾아보겠습니다. 경우에 따라 두 필드 모두 읽기 쉽고 암호화되지도 않지만 Mail.ru, Facebook, Vkontakte 등과 같이 잘 알려진 리소스에 액세스할 때 트래픽을 캡처하려고 하면 비밀번호가 인코딩됩니다. :

HTTP / 1.1 302 찾음

서버: 아파치 / 2.2.15(CentOS)

X-Powered-By: PHP / 5.3.3

P3P: CP = "NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

쿠키 설정: 비밀번호 = ; 만료 = 2024년 11월 7일 목요일 23:52:21 GMT; 경로 = /

위치: login.php

콘텐츠 길이: 0

연결: 닫기

콘텐츠 유형: 텍스트/html; 문자 집합 = UTF-8

따라서 우리의 경우:

사용자 이름: networkguru

비밀번호:

4단계. 암호 해독을 위한 인코딩 유형 결정

예를 들어 http://www.onlinehashcrack.com/hash-identification.php#res 사이트로 이동하여 식별 창에 비밀번호를 입력합니다. 우선 순위에 따라 코딩 프로토콜 목록을 받았습니다.

5단계. 사용자 암호 해독

이 단계에서 hashcat 유틸리티를 사용할 수 있습니다.

~ # 해시캣 -m 0 -a 0 /root/wireshark-hash.lf /root/rockyou.txt

출력에서 해독된 암호: simplepassword를 받았습니다.

따라서 Wireshark를 사용하면 응용 프로그램 및 서비스 운영의 문제를 해결할 수 있을 뿐만 아니라 사용자가 웹 형식으로 입력하는 암호를 가로채는 해커가 되어 볼 수 있습니다. 다음을 표시하는 간단한 필터를 사용하여 사용자 사서함의 암호를 찾을 수도 있습니다.

  • POP 프로토콜 및 필터는 다음과 같습니다. pop.request.command == "USER" || pop.request.command == "통과"
  • IMAP 및 필터는 다음과 같습니다. imap.request에는 "로그인"이 포함되어 있습니다.
  • SMTP 프로토콜을 사용하고 다음 필터를 입력해야 합니다. smtp.req.command == "인증"

인코딩 프로토콜을 해독하기 위한 더 심각한 유틸리티.

6단계. 트래픽이 암호화되고 HTTPS를 사용하는 경우 어떻게 됩니까?

이 질문에 답할 수 있는 몇 가지 옵션이 있습니다.

옵션 1. 연결하여 사용자와 서버 간의 연결을 끊고 연결이 설정되는 순간 트래픽을 캡처합니다(SSL Handshake). 연결이 설정되면 세션 키를 가로챌 수 있습니다.

옵션 2. Firefox 또는 Chrome에서 기록한 세션 키 로그 파일을 사용하여 HTTPS 트래픽을 복호화할 수 있습니다. 이렇게 하려면 브라우저가 이러한 암호화 키를 로그 파일에 기록하도록 구성해야 하며(FireFox 기반 예) 이 로그 파일을 가져와야 합니다. 기본적으로 다른 사용자의 하드 드라이브에서 세션 키 파일을 훔쳐야 합니다(불법). 그런 다음 트래픽을 캡처하고 결과 키를 사용하여 암호를 해독합니다.

설명.우리는 암호를 훔치려는 사람의 웹 브라우저에 대해 이야기하고 있습니다. 자체 HTTPS 트래픽의 암호 해독을 의미하고 연습하려는 경우 이 전략이 효과가 있습니다. 다른 사용자의 컴퓨터에 액세스하지 않고 HTTPS 트래픽의 암호를 해독하려고 하면 작동하지 않습니다. 암호화와 개인 정보 보호입니다.

옵션 1 또는 2에 대한 키를 받은 후 WireShark에 등록해야 합니다.

  1. 편집 - 기본 설정 - 프로토콜 - SSL 메뉴로 이동합니다.
  2. "여러 TCP 세그먼트에 걸쳐 있는 SSL 레코드 재조립" 플래그를 설정합니다.
  3. "RSA 키 목록"을 클릭하고 편집을 클릭합니다.
  4. 모든 필드에 데이터를 입력하고 키를 사용하여 파일에 경로를 씁니다.

WireShark는 RSA 알고리즘을 사용하여 암호화된 패킷을 해독할 수 있습니다. DHE / ECDHE, FS, ECC 알고리즘을 사용하는 경우 스니퍼는 우리의 도우미가 아닙니다.

옵션 3. 사용자가 사용하는 웹 서버에 액세스하고 키를 가져옵니다. 그러나 이것은 훨씬 더 어렵습니다. 회사 네트워크에서 응용 프로그램이나 콘텐츠 필터링을 디버깅할 목적으로 이 옵션은 법적으로 구현되지만 사용자 암호를 가로채기 위한 것은 아닙니다.

보너스

비디오: Wireshark 패킷 스니핑 사용자 이름, 암호 및 웹 페이지


이 강의에서는 네트워크 패킷 캡처를 기반으로 하는 네트워크 해킹 기술에 대해 설명합니다. 해커는 이러한 기술을 사용하여 네트워크 트래픽을 도청하여 귀중한 정보를 훔치고, 메시지 가로채기(man-in-the-middle) 공격을 목적으로 데이터 가로채기를 구성하고, 데이터 스푸핑을 허용하는 TCP 연결을 가로채고 다른 작업을 수행합니다. 똑같이 흥미로운 행동. 불행히도 실제로 이러한 공격의 대부분은 해커가 특수 유틸리티와 Unix 시스템 도구를 모두 사용할 수 있는 Unix 네트워크에만 구현됩니다. Windows 네트워크는 분명히 해커에 의해 우회되며 네트워크 패킷을 쉽게 수신하도록 설계된 스니퍼 프로그램으로 데이터 가로채기 도구를 설명하는 것으로 제한해야 합니다. 그럼에도 불구하고 적용된 해킹 기술에 대한 지식이 많은 문제를 예방하는 데 도움이 될 것이기 때문에 특히 안티 해커에 의한 그러한 공격에 대한 이론적인 설명을 무시해서는 안됩니다.

네트워크 스니핑

이더넷 네트워크 스니핑의 경우 일반적으로 수신 모드에 있는 네트워크 카드가 사용됩니다. 이더넷 네트워크에서 도청하려면 스니퍼 프로그램을 실행하는 컴퓨터가 네트워크 세그먼트에 연결되어 있어야 하며, 그 후에 이 네트워크 세그먼트의 컴퓨터에서 주고받는 모든 네트워크 트래픽이 해커가 사용할 수 있게 됩니다. 무선 네트워크 중개자를 사용하여 무선 네트워크의 트래픽을 가로채는 것이 훨씬 쉽습니다. 이 경우 케이블에 연결할 장소를 찾을 필요조차 없습니다. 또는 공격자가 컴퓨터를 인터넷 서버에 연결하는 전화선에 연결하여 편리한 장소를 찾을 수 있습니다.

스니핑 기술을 시연하기 위해 매우 인기 있는 스니퍼 프로그램을 사용할 것입니다. 스파이넷많은 웹 사이트에서 찾을 수 있습니다. 프로그램 공식 홈페이지 스파이넷에 위치한 http://members.xoom.com/layrentiu2/, 여기에서 프로그램의 데모 버전을 다운로드할 수 있습니다.

프로그램 스파이넷두 가지 구성 요소로 구성됩니다 - 캡처넷그리고 파이프넷... 프로그램 캡처넷네트워크 수준에서 이더넷 네트워크를 통해 전송된 패킷을 가로챌 수 있습니다. 이더넷 프레임의 형태로. 프로그램 파이프넷이더넷 프레임을 응용 프로그램 계층 패킷으로 조합하여 예를 들어 전자 메일 메시지, HTTP(웹 서버 통신) 메시지 및 기타 기능을 복구할 수 있습니다.

불행히도 데모 버전에서는 스파이넷기회 파이프넷 HTTP 패키지의 데모 빌드로 제한되므로 작동 방식을 보여줄 수 없습니다. 스파이넷전부. 그러나 우리는 네트워크 스니핑의 기능을 시연할 것입니다. 스파이넷실험 네트워크의 예에서 호스트에서 텍스트 파일 전송 검-2000호스트당 알렉스-Z일반 Windows 탐색기를 사용합니다. 컴퓨터에서 동시에 A1ex-1우리는 프로그램을 시작할 것입니다 캡처넷, 전송된 패킷을 가로채 이더넷 프레임에서 전송된 파일의 내용을 읽을 수 있습니다. 그림에서 1은 파일에 있는 비밀 메시지의 텍스트를 보여줍니다. 비밀.txt; 캡처된 이더넷 프레임에서 이 텍스트를 찾으려고 합니다.

쌀. 1. 메모장 창의 비밀 메시지 텍스트

이더넷 프레임을 캡처하려면 다음 단계를 따르십시오.

컴퓨터에서 알렉스-Z프로그램을 실행 캡처넷... 표시된 프로그램 작업 창에서 메뉴 명령을 선택하십시오. 캡처 * 시작(캡처 * 시작)을 클릭하고 네트워크 프레임 캡처 프로세스를 시작합니다.

Windows 탐색기를 사용하여 컴퓨터에서 security.txt 파일을 복사합니다. 검-2000A1ex-3.

secret.txt 파일 전송 후 메뉴 명령어 선택 캡처 * 중지(캡처 * 중지) 차단 프로세스를 중지합니다.

캡처된 이더넷 프레임은 프로그램 작업 창의 오른쪽에 표시됩니다. 캡처넷(그림 2), 위쪽 목록의 각 행은 이더넷 프레임을 나타내고 목록 아래에는 선택한 프레임의 내용이 표시됩니다.

쌀. 2. 이더넷 프레임에는 비밀 메시지의 텍스트가 포함됩니다.

가로채는 프레임 목록을 살펴보면 텍스트가 포함된 프레임을 쉽게 찾을 수 있습니다. 이것은 우리가 전송한 매우 큰 비밀입니다(이것은 매우 큰 비밀입니다).

가로채는 모든 네트워크 트래픽이 기록된 가장 간단한 예라는 점을 강조합니다. 프로그램 캡처넷특정 프로토콜을 통해 특정 호스트 포트로 전송된 패킷을 가로채고, 특정 콘텐츠가 포함된 메시지를 선택하고, 가로채는 데이터를 파일에 축적할 수 있습니다. 이러한 작업을 수행하는 기술은 간단하며 프로그램의 도움말 시스템을 사용하여 마스터할 수 있습니다. 스파이넷.

해커는 원시적인 도청 외에도 더 정교한 데이터 가로채기 도구를 사용할 수 있습니다. 아래는 이론적인 측면이기는 하지만 그러한 방법에 대한 간략한 개요입니다. 그 이유는 Windows 네트워크의 경우 데이터 도청 공격의 ​​실제 구현이 극히 제한적이고 도청 공격을 위한 신뢰할 수 있는 도구 세트가 다소 부족하기 때문입니다.

네트워크 트래픽을 가로채는 방법

위와 같은 네트워크 스니퍼로 네트워크 스니퍼 캡처넷, 데이터를 가로채는 가장 쉬운 첫 번째 방법입니다. 뿐만 아니라 스파이넷네트워크 스니핑의 경우 원래 네트워크 활동 분석, 네트워크 진단, 지정된 기준에 따른 트래픽 선택 및 기타 네트워크 관리 작업을 목적으로 개발된 많은 도구가 사용됩니다. 그러한 프로그램의 예는 TCP 덤프 (http://www.tcpdump.org), 나중에 분석을 위해 특수 로그에 네트워크 트래픽을 기록할 수 있습니다.

네트워크 도청으로부터 보호하기 위해 다음과 같은 특수 프로그램이 사용됩니다. 안티스니프 (http://www.securitysoftwaretech.com/antisniff), 네트워크 트래픽 수신에 바쁜 네트워크 컴퓨터를 식별할 수 있습니다. 문제를 해결하기 위한 Antisnifer 프로그램은 네트워크에 청취 장치가 있다는 특별한 표시를 사용합니다. 스니퍼 컴퓨터의 네트워크 카드는 특수 청취 모드에 있어야 합니다. 수신 모드에 있는 동안 네트워크 컴퓨터는 테스트 중인 호스트의 주소로 전송된 IP 데이터그램에 특별한 방식으로 반응합니다. 예를 들어, 수신 호스트는 일반적으로 호스트 주소로 전송된 데이터그램에 국한되지 않고 들어오는 모든 트래픽을 처리합니다. 프로그램이 인식할 수 있는 의심스러운 호스트 동작의 다른 징후가 있습니다. 안티스니프.

의심할 여지 없이 도청은 네트워크를 통해 전송된 암호, 네트워크 컴퓨터 주소, 기밀 데이터, 문자 등 많은 유용한 정보를 얻을 수 있기 때문에 침입자의 관점에서 매우 유용합니다. 그러나 간단한 도청은 해커가 데이터를 수정하고 변조하기 위해 두 호스트 간의 네트워크 통신을 방해하는 것을 방지합니다. 이러한 문제를 해결하기 위해서는 보다 정교한 기술이 필요하다.

스푸핑 ARP 요청

두 호스트 A와 B 사이의 네트워크 통신 프로세스를 가로채서 닫기 위해 공격자는 호스트 A와 B에 가짜 ARP(Address Resolution Protocol) 메시지를 전송하여 상호 작용하는 호스트의 IP 주소를 자신의 IP 주소로 스푸핑할 수 있습니다. ARP에 대한 자세한 내용은 부록 D에서 호스트 IP 주소를 호스트의 NIC에 고정 배선된 머신 주소(MAC 주소)로 해석(변환)하는 방법을 설명합니다. 해커가 ARP를 사용하여 호스트 A와 B 사이의 네트워크 통신을 가로채는 방법을 살펴보겠습니다.

호스트 A와 B 사이의 네트워크 트래픽을 가로채기 위해 해커는 A와 B가 메시지를 교환할 때 이 가짜 IP 주소를 사용하도록 이러한 호스트에 자신의 IP 주소를 집중시킵니다. 해커는 자신의 IP 주소를 도용하기 위해 다음과 같은 작업을 수행합니다.

공격자는 예를 들어 다음 명령을 사용하여 호스트 A와 B의 MAC 주소를 확인합니다. nbtstat패키지에서 W2RK.

공격자는 호스트의 IP 주소를 컴퓨터의 MAC 주소로 변환하라는 요청에 대한 가짜 ARP 응답인 호스트 A와 B의 식별된 MAC 주소로 메시지를 보냅니다. 호스트 A는 호스트 B의 IP 주소가 공격자 컴퓨터의 MAC 주소와 일치함을 알립니다. 호스트 B는 호스트 A의 IP 주소도 공격자의 MAC 주소와 일치한다고 알려줍니다.

호스트 A와 호스트 B는 수신한 MAC 주소를 ARP 캐시에 입력한 다음 이를 사용하여 서로 메시지를 보냅니다. A와 B의 IP 주소는 공격자의 컴퓨터의 MAC 주소에 해당하므로 호스트 A와 B는 아무 의심 없이 자신의 메시지로 원하는 모든 작업을 수행할 수 있는 중개자를 통해 통신합니다.

이러한 공격을 방어하기 위해 네트워크 관리자는 네트워크 컴퓨터의 MAC 주소 및 IP 주소 매핑 테이블이 있는 데이터베이스를 유지 관리해야 합니다. 또한 유틸리티와 같은 특수 소프트웨어를 사용하여 아르워치 (ftp://ftp.ee.lbl.gov/arpwatch-2.lab.tar.gz), 네트워크를 주기적으로 조사하고 불일치를 식별할 수 있습니다.

UNIX 네트워크에서 이러한 유형의 가짜 ARP 공격은 다음과 같은 네트워크 트래픽을 모니터링하고 제어하는 ​​시스템 유틸리티를 사용하여 구현할 수 있습니다. arpredirect... 불행히도, 그러한 신뢰할 수 있는 유틸리티는 분명히 Windows 2000/XP 네트워크에서 구현되지 않습니다. 예를 들어, NTsecurity 웹사이트( http://www.ntsecurity.nu) 유틸리티를 다운로드할 수 있습니다. 그래빗AII, 네트워크 호스트 간에 트래픽을 리디렉션하는 수단으로 제공됩니다. 그러나 유틸리티의 기능에 대한 기본 점검 그래빗AII기능 구현에서 아직 완전한 성공과는 거리가 멀다는 것을 보여줍니다.

거짓 라우팅

네트워크 트래픽을 가로채기 위해 공격자는 예를 들어 위조된 ICMP 리디렉션 메시지를 사용하여 자신의 IP 주소로 네트워크 라우터의 실제 IP 주소를 스푸핑할 수 있습니다. 호스트 A는 RFC-1122에 따라 수신된 리디렉션 메시지를 다른 호스트(예: B)로 보낸 데이터그램에 대한 응답으로 해석해야 합니다. 호스트 A는 수신된 리디렉션 메시지의 내용을 기반으로 리디렉션 메시지에 대한 조치를 결정합니다. 데이터그램 리디렉션이 새 경로의 A에서 B로 리디렉션에 설정되어 있으면 호스트 A가 수행할 작업입니다.

잘못된 라우팅을 수행하기 위해 공격자는 호스트 A가 위치한 로컬 네트워크의 조직에 대한 몇 가지 세부 정보, 특히 트래픽이 호스트 A에서 B로 전송되는 라우터의 IP 주소를 알아야 합니다. 이를 알고 공격자는 IP - 보낸 사람의 주소가 라우터의 IP 주소로 정의되고 대상이 호스트 A인 IP 데이터그램을 생성합니다. 또한 데이터그램에는 새 라우터의 주소 필드가 IP 주소로 설정된 ICMP 리디렉션 메시지가 포함됩니다. 공격자의 컴퓨터. 이러한 메시지를 받으면 호스트 A는 모든 메시지를 공격자 컴퓨터의 IP 주소로 보냅니다.

이러한 공격으로부터 보호하려면 호스트 A에서 ICMP 리디렉션 메시지 처리를 비활성화(예: 방화벽 사용)하고 명령 추적자(Unix에서 이것은 tracerout 명령입니다). 이러한 유틸리티는 물론 네트워크 관리자가 경계하는 경우 설치 중에 제공되지 않은 로컬 네트워크에 나타난 추가 경로를 찾을 수 있습니다.

위의 가로채기 예(공격자의 능력이 제한되지 않음)는 데이터에 기밀 정보가 포함된 경우 네트워크를 통해 전송되는 데이터를 보호해야 할 필요성을 확신합니다. 네트워크 트래픽 가로채기로부터 보호하는 유일한 방법은 암호화 알고리즘 및 암호화 프로토콜을 구현하고 기밀 정보의 공개 및 대체를 방지하는 프로그램을 사용하는 것입니다. 이러한 문제를 해결하기 위해 암호화는 보안 프로토콜을 통해 전송되는 메시지의 신뢰성을 암호화, 서명 및 확인하는 수단을 제공합니다.

VPN(가상 사설망)은 4장에 설명된 통신 보안의 모든 암호화 방법에 대한 실용적인 구현을 제공합니다. 암호화 보호의 원칙과 방법에 대한 간략한 개요는 부록 E와 애플리케이션에서 제공하는 암호화 보호에 대한 자세한 설명에서 찾을 수 있습니다. PGP 데스크탑 보안 (http://www.pgp.com).

TCP 연결 하이재킹

가장 정교한 네트워크 트래픽 가로채기 공격은 해커가 TCP 패킷을 생성하고 공격받은 호스트로 전송하여 호스트와의 현재 통신 세션을 중단하는 TCP 하이재킹입니다. 또한 중단된 TCP 연결을 복원하는 TCP 프로토콜의 기능을 사용하여 해커는 중단된 통신 세션을 가로채서 연결이 끊긴 클라이언트 대신 계속합니다.

TCP 연결 하이재킹 공격을 수행하기 위해 여러 가지 효율적인 유틸리티가 개발되었지만 모두 Unix 플랫폼용으로 구현되었으며 이러한 유틸리티는 웹 사이트의 소스 코드로만 제공됩니다. 따라서 해킹의 고귀한 원인을 확신하는 실무자로서 TCP 연결을 가로채는 공격은 거의 쓸모가 없습니다. (타인의 프로그램 코드를 이해하고 싶은 분은 사이트 참조 http://www.cri.cz/~kra/index.html잘 알려진 TCP 연결 차단 유틸리티의 소스 코드를 다운로드할 수 있는 곳 사냥파벨 크라우즈).

실용적인 도구가 부족함에도 불구하고 우리는 TCP 연결 가로채기와 같은 흥미로운 주제를 무시할 수 없으며 그러한 공격의 일부 측면에 대해 설명합니다. TCP 패킷의 구조와 TCP 연결이 설정되는 순서에 대한 몇 가지 정보는 이 책의 부록 D에 나와 있지만 여기서는 이 질문에 초점을 맞출 것입니다. 정확히 무엇이 해커가 TCP 연결을 가로채서 공격을 수행할 수 있도록 합니까? 및 의 논의를 주로 바탕으로 이 주제를 더 자세히 살펴보겠습니다.

TCP(전송 제어 프로토콜)는 가상 통신 채널을 통해 논리적 연결을 설정할 수 있도록 하는 OSI 전송 계층의 기본 프로토콜 중 하나입니다. 패킷은 시퀀스 등록과 함께이 채널을 통해 송수신되고 패킷 흐름이 제어되며 손상된 패킷의 재전송이 구성되며 세션이 끝나면 통신 채널이 끊어집니다. TCP는 고급 메시지 및 연결 식별 시스템이 있는 TCP/IP 제품군의 유일한 기본 프로토콜입니다.

TCP 패킷을 식별하기 위해 TCP 헤더에 두 개의 32비트 식별자가 있으며, 이 식별자는 패킷 카운터 역할도 하며 시퀀스 번호와 승인 번호라고 합니다. 우리는 또한 제어 비트라고 하는 TCP 패킷의 다른 필드에 관심을 가질 것입니다. 이 6비트 필드에는 다음 제어 비트가 포함됩니다(왼쪽에서 오른쪽으로).

URG - 긴급 플래그;

ACK - 확인 플래그;

PSH - 캐리 플래그;

RST - 연결 재설정 플래그.

SYN - 동기화 플래그.

FIN - 연결 종료 플래그.

TCP 연결을 만드는 방법을 살펴보겠습니다.

1. 호스트 A가 호스트 B와 TCP 연결을 설정해야 하는 경우 호스트 A는 호스트 B에 다음 메시지를 보냅니다.

A -> B: SYN, ISSa

이것은 호스트 A가 보낸 메시지에 SYN(동기화 시퀀스 번호) 플래그가 설정되어 있고 시퀀스 번호 필드가 32비트 ISSa(초기 시퀀스 번호)로 설정되어 있음을 의미합니다.

2. 호스트 A로부터 수신된 요청에 대한 응답으로 호스트 B는 SYN 비트가 설정되고 ACK 비트가 설정되는 메시지로 응답합니다. 시퀀스 번호 필드에서 호스트 B는 초기 카운터 값인 ISSb를 설정합니다. 확인 번호 필드에는 호스트 A의 첫 번째 패킷에서 수신한 ISSa 값이 1씩 증가합니다. 따라서 호스트 B는 다음 메시지로 응답합니다.

B -> A: SYN, ACK, ISSb, ACK(ISSa + 1)

3. 마지막으로 호스트 A는 다음과 같은 메시지를 호스트 B에 보냅니다. 여기서 비트가 설정됩니다. 물어보기; 서수 필드에는 값이 포함됩니다. ISSa + 1; 확인 번호 필드에는 값이 포함됩니다. ISSb + 1... 호스트 간의 TCP 연결 후 그리고 V확립된 것으로 간주:

A -> B: ACK, ISSa + 1, ACK(ISSb + 1)

4. 이제 호스트 호스트에 데이터 패킷을 보낼 수 있습니다. V새로 생성된 가상 TCP 채널을 통해:

A -> B: ACK, ISSa + 1, ACK(ISSb + 1); 데이터

여기 데이터데이터를 나타냅니다.

위의 TCP 연결 생성 알고리즘에서 TCP 가입자와 TCP 연결의 유일한 식별자는 시퀀스 번호와 확인 번호의 두 32비트 매개변수뿐임을 알 수 있습니다. 아이사그리고 ISSb... 따라서 해커가 필드의 현재 값을 알아낼 수 있다면 아이사그리고 ISSb, 그러면 아무 것도 그가 가짜 TCP 패킷을 형성하는 것을 막을 수 없습니다. 이것은 해커가 매개변수의 현재 값을 찾는 것으로 충분하다는 것을 의미합니다. 아이사그리고 ISSb주어진 TCP 연결에 대한 TCP 패킷, 주어진 TCP 연결에 대해 클라이언트를 대신하여 인터넷의 모든 호스트에서 패킷을 보내면 이 패킷이 유효한 것으로 받아들여질 것입니다!

이러한 TCP 패킷 스푸핑의 위험도 중요합니다. 고급 FTP 및 TELNET 프로토콜이 TCP 프로토콜을 기반으로 구현되고 FTP 클라이언트 및 TELNET 패킷의 식별이 전적으로 TCP 프로토콜을 기반으로 하기 때문입니다.

또한 FTP 및 TELNET 프로토콜은 메시지 발신자의 IP 주소를 확인하지 않기 때문에 가짜 패킷을 수신한 후 FTP 또는 TELNET 서버는 가짜 패킷에 지정된 해커 호스트의 IP 주소로 응답 메시지를 보냅니다. 그 후, 해커 호스트는 IP 주소에서 FTP 또는 TELNET 서버로 작업을 시작하지만 법적으로 연결된 사용자의 권한으로 작업을 시작하고 카운터의 불일치로 인해 서버와의 연결이 끊어집니다.

따라서 위에서 설명한 공격을 수행하려면 두 개의 현재 32비트 매개변수에 대한 지식이 필요하고 충분합니다. 아이사그리고 ISSb TCP 연결을 식별합니다. 그것들을 얻을 수 있는 가능한 방법을 생각해 봅시다. 해커 호스트가 공격받은 네트워크 세그먼트에 연결되어 있는 경우 값을 획득하는 작업 아이사그리고 ISSb사소하고 네트워크 트래픽을 분석하여 해결합니다. 따라서 TCP 프로토콜은 원칙적으로 공격자가 이 연결을 통해 전송되는 메시지를 가로챌 수 없는 경우, 즉 해커 호스트가 다른 네트워크 세그먼트에 연결된 경우에만 연결을 보호하도록 허용한다는 점을 분명히 이해해야 합니다. 가입자의 TCP 연결 세그먼트.

따라서 해커에게 가장 큰 관심은 공격자와 그의 대상이 서로 다른 네트워크 세그먼트에 있는 세그먼트 간 공격입니다. 이 경우 값을 구하는 작업 아이사그리고 ISSb사소한 것이 아닙니다. 이 문제를 해결하기 위해 현재 두 가지 방법만 발명되었습니다.

이전 값을 외삽하여 TCP 연결 매개변수의 초기 값에 대한 수학적 예측 아이사그리고 ISSb.

취약점을 사용하여 Unix rsh 서버에서 TCP 연결 가입자를 식별합니다.

첫 번째 문제는 다양한 운영 체제에서 TCP 프로토콜 구현에 대한 심층 연구로 해결되었으며 이제 순전히 이론적인 가치를 갖습니다. 두 번째 문제는 Unix 시스템의 취약성을 악용하여 신뢰할 수 있는 호스트를 식별함으로써 해결됩니다. (주어진 호스트에 대해 신뢰할 수 있음 네트워크 호스트라고 함 V사용자가 호스트에 연결할 수 있는 사용자 호스트 r-service 인증 없음 ). 해커는 TCP 패킷의 매개변수를 조작하여 신뢰할 수 있는 호스트로 가장하고 공격받은 호스트와의 TCP 연결을 가로챌 수 있습니다.

이 모든 것이 매우 흥미롭지만 이러한 종류의 연구에 대한 실질적인 결과는 아직 가시적이지 않습니다. 따라서이 주제를 탐구하려는 모든 사람은 일반적으로 위의 정보를 가져온 책을 참조하도록 조언합니다.

결론

네트워크 데이터 가로채기는 가장 효과적인 네트워크 해킹 방법으로, 해커가 네트워크에서 유통되는 거의 모든 정보를 얻을 수 있습니다. 가장 큰 실질적인 발전은 스니핑을 통해 이루어졌습니다. 네트워크 듣기; 그러나 트래픽을 해커 호스트로 리디렉션하기 위해 네트워크의 정상적인 기능을 방해하여 수행되는 네트워크 데이터를 가로채는 방법, 특히 TCP 연결을 가로채는 방법을 무시할 수 없습니다. 그러나 실제로 마지막으로 언급한 방법은 아직 충분한 개발이 이루어지지 않았으며 개선이 필요합니다.

안티 해커는 데이터 가로채기의 유일한 구원은 암호화라는 것을 알아야 합니다. 암호화 보호 방법. 네트워크를 통해 메시지를 보낼 때 네트워크의 케이블 시스템이 절대적으로 취약하며 네트워크에 연결하는 모든 해커가 전송된 모든 비밀 메시지를 가져올 수 있다고 미리 가정해야 합니다. 이 문제를 해결하기 위한 두 가지 기술이 있습니다. VPN 네트워크 생성과 메시지 자체 암호화입니다. 이러한 모든 작업은 소프트웨어 패키지의 도움으로 매우 쉽게 해결할 수 있습니다. PGP 데스크탑 보안(해당 설명은 예를 들어 에서 찾을 수 있습니다.)

원본: 네트워크 스니핑
저자: 폴 코보
발행일: 2015년 3월 12일
번역: A. 파닌
양도일: 2015년 4월 1일

23장. 네트워크 트래픽 캡처

네트워크 관리자는 wireshark 또는 tcpdump와 같은 탐지기를 사용하여 네트워크 문제를 진단할 수 있어야 합니다.

또한 학생은 네트워크 기능의 원리를 이해하기 위해 스니퍼를 사용해야 하는 경우가 많습니다. 이 장에서는 네트워크 트래픽을 캡처하기 위한 적절한 기술에 대해 설명합니다.

23.1. 와이어샤크 앱

23.1.1. 와이어샤크 설치

이 예는 확장자가 .deb인 소프트웨어 패키지를 사용하는 배포판(Debian, Mint, Xubuntu 및 기타 배포판 포함)에 wireshark를 설치하는 명령을 제공합니다.

[이메일 보호됨]: ~ # 패키지 목록 읽기 Done 종속성 트리 작성 상태 정보 읽기 Done ... (출력이 단축됨)

CentOS, RHEL 및 Fedora와 같은 .rpm 소프트웨어 패키지를 사용하는 배포에서 yum을 사용하여 wireshark를 설치할 수 있습니다.

# yum install wireshark 로드된 플러그인: fastmirror 캐시된 호스트 파일에서 미러 속도 로드 ... (출력이 잘림)

23.1.2. 네트워크 인터페이스 선택

wireshark를 처음 시작할 때 네트워크 인터페이스를 선택해야 합니다. 아래 그림과 유사한 대화 상자가 표시됩니다.

일부 배포판에서는 루트 사용자만 네트워크 트래픽을 가로챌 수 있으므로 사용 가능한 네트워크 인터페이스가 없을 수 있습니다. 이 경우 sudo wireshark 명령을 사용하여 root로 wireshark를 시작해야 합니다.

또는 일반 지침을 따르고 tcpdump 유틸리티 또는 기타 도구를 사용하여 트래픽을 가로채고 데이터를 파일에 쓸 수 있습니다. 가로채는 모든 데이터는 나중에 wireshark를 사용하여 분석할 수 있습니다.

23.1.3. 트래픽 최소화

네트워크 트래픽을 가로채는 과정에서 매우 짧은 시간에 수천 개의 패킷이 생성될 수 있습니다. 분명히 이 양의 데이터는 트래픽을 분석하기 어렵게 만듭니다. 네트워크 내에서 스니퍼를 격리하여 이 상황에서 벗어나도록 하십시오. 기본 옵션은 완전한 제어 하에 격리된 가상 네트워크의 네트워크 인터페이스를 통과하는 트래픽을 가로채는 것입니다.

집에서 네트워크 트래픽을 캡처하는 도구를 배우는 경우 컴퓨터에서 실행 중인 모든 네트워킹 응용 프로그램을 종료하고 다른 컴퓨터 및 스마트폰 및 태블릿과 같은 장치에서 컴퓨터의 연결을 끊는 것이 트래픽을 최소화하는 좋은 생각입니다.

그래도 트래픽을 최소화하기 위한 더 중요한 도구는 필터이며 다음 섹션에서 설명합니다.

23.1.4. ping 유틸리티에서 생성된 트래픽 가로채기

스니퍼를 실행하고 세 개의 ping 명령을 실행한 결과 네트워크를 통해 전송된 모든 패킷을 캡처했습니다(이 명령을 루트로 실행하는 것은 의미가 없음).

[이메일 보호됨]:~# ping -c2 ns1.paul.local PING ns1.paul.local(10.104.33.30) 56(84)바이트 데이터. 10.104.33.30의 64바이트: icmp_req = 1 ttl = 64 시간 = 0.010 ms 10.104.33.30의 64 바이트: icmp_req = 2 ttl = 64 시간 = 0.023 mspa 통계 --- 2ping 로컬 패킷 전송 , 2개 수신, 0% 패킷 손실, 시간 1001ms rtt min / avg / max / mdev = 0.010 / 0.016 / 0.023 / 0.007ms [이메일 보호됨]:~# ping -c3 linux-training.be PING linux-training.be(188.93.155.87) 56(84) 바이트 데이터. antares.ginsys.net의 64바이트(188.93.155.87): icmp_req = 1 ttl = 56 시간 = 15.6ms antares.ginsys.net의 64바이트(188.93.155.87): icmp_req = 5.46시간 = ms antares.ginsys.net(188.93.155.87): icmp_req = 3 ttl = 56 시간 = 14.7 ms --- linux-training.be ping 통계 --- 3개의 패킷 전송, 3개 수신, 0% 패킷 손실, 시간 2003ms rtt 최소 / 평균 / 최대 / mdev = 14.756 / 16.110 / 17.881 / 1.309ms [이메일 보호됨]:~# ping -c1 centos7.paul.local PING centos7.paul.local(10.104.33.31) 56(84) 바이트 데이터. 10.104.33.31에서 64바이트: icmp_req = 1 ttl = 64 시간 = 0.590ms --- centos7.paul.local 핑 통계 --- 전송된 패킷 1개, 수신된 패킷 1개, 패킷 손실 0%, 시간 0ms rtt min/avg/max / mdev = 0.590 / 0.590 / 0.590 / 0.000ms

총 200개 이상의 패킷이 네트워크에서 캡처되었습니다. 필터 필드에 icmp 줄을 입력하고 "적용" 버튼을 클릭하면 모든 것이 훨씬 더 명확해집니다.

23.1.5. ping 유틸리티 및 dns 클라이언트에서 생성된 트래픽 가로채기

동일한 데이터 캡처 세션으로 작업하면서 훌륭한 필터를 적용해 보겠습니다. dns 프로토콜과 icmp 프로토콜 모두와 관련된 트래픽을 모니터링하기를 원하므로 필터 필드에 언급된 두 프로토콜의 이름을 입력해야 합니다.

문제의 두 프로토콜과 관련된 데이터를 캡처하려면 필터 필드에 "dns 또는 icmp" 문자열을 입력해야 합니다. "dns and icmp" 줄을 입력하면 언급된 두 프로토콜과 관련된 패킷이 없기 때문에 패킷에 대한 정보가 표시되지 않습니다.

위의 그림을 보면 패킷 25와 26의 소스 및 대상 IP 주소가 10.104.33.30임을 알 수 있습니다. 이는 DNS 클라이언트가 DNS 서버와 동일한 컴퓨터에서 실행되기 때문입니다.

패킷 31 및 32의 경우에도 유사한 상황이 관찰됩니다. ping 유틸리티를 사용하면 이 유틸리티가 실행 중인 작업 시스템으로 패킷이 전송되기 때문입니다.

23.1.6. 특정 IP 주소

이 경우 특정 IP 주소를 포함하고 DNS 프로토콜과 관련된 패킷을 필터링합니다. 문자열 "ip.addr == 10.104.33.30 and dns"가 필터로 사용됩니다. and 지시문은 두 가지 조건을 충족하는 각 패키지에 대한 정보를 표시하도록 애플리케이션에 지시합니다.

패키지 93에는 linux-training.be 도메인의 유형 A 레코드를 검색하기 위한 DNS 쿼리가 포함되어 있습니다. 패킷 98에는 DNS 서버의 응답이 포함되어 있습니다. 패킷 93이 전송된 후 패킷 98이 수신되기 전에 어떤 일이 발생했다고 생각합니까? 다음 섹션을 읽기 전에 이 질문에 답하십시오(다른 시스템으로 작업할 때 어떤 일이 일어날지 예측하고 예측의 정확성을 확인하는 것은 항상 유용합니다).

23.1.7. 프레임 기반 필터링

가로채는 패킷의 정확한 용어는 프레임입니다(OSI 네트워크 모델의 레이어 2에서 패킷을 캡처하기 때문에). 따라서 특정 번호의 패킷에 대한 정보를 표시하려면 필터 필드에 frame.number 지시문을 사용하십시오.

23.1.8. 패키지 내용물 검사

스니퍼 창의 중간 창을 확장할 수 있습니다. 이 패널 내에서 행을 선택하면 하단 패널의 필드에서 해당 바이트 값을 볼 수 있습니다.

아래 그림은 내 노트북의 선택된 주소가 있는 스니퍼 창의 중간 창을 보여줍니다.

위의 기술은 단일 네트워크 인터페이스에서 트래픽을 캡처하는 데 효과적입니다. 예를 들어 tcpdump -i any 명령을 사용하여 트래픽을 가로채면 "Linux 요리 캡처" 패킷 캡처 방법을 보게 됩니다.

23.1.9. 더 많은 필터 예

논리적 또는 ("OR") 지시문을 사용하여 두 프로토콜 설명을 결합할 수 있습니다. 아래 그림은 ARP 및 BOOTP(또는 DHCP) 패킷만 캡처하는 방법을 보여줍니다.

그리고 다음 그림은 특정 IP 주소를 포함하는 DNS 특정 패킷을 캡처하는 방법을 보여줍니다.

23.2. Tcpdump 유틸리티

시스템의 명령줄 인터페이스로 작업할 때 tcpdump 유틸리티를 사용하여 패킷 캡처를 수행할 수 있습니다. 다음은 그 사용의 몇 가지 예입니다.

tcpdump host $ ip 명령을 사용하면 특정 호스트(이 경우 IP 주소 192.168.1.38)와 관련된 모든 트래픽에 대한 정보가 표시됩니다.

[이메일 보호됨]: ~ # tcpdump host 192.168.1.38 tcpdump: 자세한 출력 억제, eth0, 링크 유형 EN10MB(이더넷)에서 수신하는 전체 프로토콜 디코딩에 -v 또는 -vv 사용, 캡처 크기 96바이트

ssh 프로토콜(TCP 프로토콜, 포트 22)에만 관련된 트래픽은 tcpdump tcp port $ port 명령을 사용하여 가로챌 수 있습니다. 더 나은 가독성을 위해 출력 라인이 76자로 잘렸습니다.

[이메일 보호됨]: ~ # tcpdump tcp 포트 22 tcpdump: 자세한 출력 억제, eth1, 링크 유형 EN10MB(이더넷)에서 수신하는 전체 프로토콜 디코딩에 -v 또는 -vv 사용, 캡처 크기 96바이트 14: 22: 20.716313 IP deb503.local.37973 > sh rhel53.local.ssh: P 666050963: 66605 14: 22: 20.719936 IP rhel53.local.ssh> deb503.local.37973: P 1:49 (48) 2020 ack 48 14: .272: rhel . deb503.local.37973: P 49: 113(64) ack 14: 22: 20.721321 IP rhel53.local.ssh> deb503.local.37973: P 113: 161(428) deb.local ack 14: 272: 37973> rhel53.local.ssh:. ack 161 win 200 14: 22: 20.722492 IP rhel53.local.ssh> deb503.local.37973: P 161: 225 (64) ack 14: 22: 20.760602 IP deb503.3 (Ack 225 win 200 14: 22: 23.108106 IP deb503.local.54424> ubuntu910.local.ssh: P 467252637: 46 14: 22: 23.116804 IP.ubuntu91 ) ack 14: 22: 23.116844 IP deb503.local.54424> ubuntu910.local.ssh:. ack 81 win 2 ^ C 10개의 패킷이 캡처됨 10개의 패킷이 필터에서 수신됨 0개의 패킷이 커널에서 삭제됨

캡처된 데이터를 파일에 쓰는 것과 동일한 작업을 tcpdump -w $ filename 명령을 사용하여 수행할 수 있습니다.

[이메일 보호됨]: ~ # tcpdump -w sshdump.tcpdump tcp 포트 22 tcpdump: eth0에서 수신, 링크 유형 EN10MB(이더넷), 캡처 크기 96바이트 ^ C 17 패킷 캡처 필터 0에서 수신한 17 패킷 커널에서 삭제된 패킷

tcpdump -r $ filename 명령은 이전 예에서 생성된 파일의 내용을 표시할 수 있습니다.

[이메일 보호됨]: ~ # tcpdump -r sshdump.tcpdump

이 유틸리티를 사용하는 다른 많은 예는 tcpdump 매뉴얼 페이지에서 찾을 수 있습니다.

23.3. 실습: 네트워크 트래픽 가로채기

23.4. 올바른 연습 절차: 네트워크 트래픽 가로채기

1. 시스템에 wireshark를 설치합니다(가상 머신에서 실행되지 않음).

Debain / Ubuntu 배포판: aptitude install wireshark

Red Hat / Mandriva / Fedora 배포판: yum install wireshark

2. ping 유틸리티를 사용하여 귀하와 다른 컴퓨터 간에 트래픽을 생성합니다.

$ ip_address 핑

3. 네트워크 트래픽 캡처를 시작합니다.

(sudo) 와이어샤크

네트워크 인터페이스 선택(아마도 eth0)

4. 필터를 사용하여 ping 유틸리티의 요청에 대한 응답이 포함된 패킷에 대한 정보만 표시합니다.

필터 필드에 "icmp"(따옴표 제외)를 입력하고 "적용" 버튼을 클릭합니다.

5. 이제 도메인 이름(예: www.linux-training.be)을 ping에 전달하고 DNS 요청 및 응답 패킷을 잡으려고 시도합니다. 어떤 DNS 서버가 사용되었습니까? 요청 및 응답을 전송하는 데 TCP 또는 UDP 프로토콜이 사용되었습니까?

먼저 스니퍼를 시작하십시오.

필터 필드에 "dns"를 입력하고 "적용" 버튼을 클릭합니다.

[이메일 보호됨]: ~ # ping www.linux-training.be PING www.linux-training.be (88.151.243.8) 56(84)바이트 데이터. fosfor.openminds.be에서 64바이트(88.151.243.8): icmp_seq = 1 ttl = 58 시간 = 14.9ms fosfor.openminds.be에서 64바이트(88.151.243.8): icmp_seq = 1 6580t --- www.linux-training.be ping 통계 --- 2개의 패킷 전송, 2개의 수신, 0% 패킷 손실, 시간 1002ms rtt min / avg / max / mdev = 14.984 / 15.539 / 16.095 / 0.569ms

wireshark 창은 비슷하게 보일 것입니다.

wireshark 응용 프로그램 창의 정보를 기반으로 DNS 요청이 UDP 패킷을 사용하여 전송되었다는 결론을 내릴 수 있으며 그 후에는 제기된 질문에 쉽게 대답할 수 있습니다.

6. 비밀번호 요청 양식이 있는 폐쇄된 웹사이트를 찾습니다. 스니퍼가 실행되는 동안 사용자 이름 "paul"과 암호 "hunter2"를 사용하여 로그인을 시도하십시오. 이제 스니퍼가 캡처한 데이터에서 입력한 사용자 이름과 비밀번호를 찾으십시오.

이 공유