[파이썬 보안] 스니핑(1/3)편

애플망고·2023년 6월 25일
0
post-thumbnail

🔑 스니핑이란?

Sniffing : 킁킁거리며 냄새를 맡다.
네트워크를 살피면서 패킷을 감청하는 것을 의미한다. A와 B사이의 통신에서 제3자인 C가 감시하며 정보를 채가는 것이다.

Q: 그러면 왜 스니핑을 주의해야하나?

이유는 간단하다. 주고 받는 패킷에 어떤 내용이 담겨있을지 모르기 때문이다. 만약 패킷을 주고 받는 상대가 어떤 웹사이트이고 TLS 보안 연결이 되지 않았을때 내가 로그인을 하는 순간 제3자가 패킷을 감청하였다면 나의 로그인 정보와 패스워드가 유출될 수 있는 것이다.

쉽게 말하자면 나의 개인정보가 유출되고 있는 것이다.

Q: 어떻게 패킷을 감청하는거지?

보안이 허술한 네트워크 통신이면 가능하다. 왜냐하면 암호화하지 않은 데이터를 전송하는 순간 누군가가 패킷을 감청한다면 그 정보가 그대로 제3자에게 넘어가기 때문이다.

물론 보안을 잘 해둔다고 한들 사람들이 위험에 처할 수 있는 상황이 또 하나 있다. 바로 공용 와이파이다.
공용 와이파이에 접속을 한다면 무선 AP를 거쳐서 전달되는 데이터들이 제3자인 해커에게 감청될 수 있는 위험이 존재한다.

이런 위험이 항상 있기 때문에 보안을 중요시 한다면 공용 와이파이는 사용해서는 안된다.


🧾 스니핑 도구

스니핑 도구에는 아주 많은 것이 있다. 그 중에서도 와이어샤크가 가장 유명하다.
와이어샤크는 무료이며 매우 강력한 기능을 갖추고 있다. 하지만 그 기능을 모두 사용하려면 매우 전문적인 지식이 필요하다.

초보자가 사용한다면 간단한 네트워크 패킷 감지 프로그램이 되지만 전문가가 사용하게 된다면 매우 강력한 해킹 도구가 될수도 매우 강력한 보안 소프트웨어가 될 수 있는 것이다.

우리의 목적은 해킹 도구를 만들면서도 보안 능력을 키우는 것이기 때문에 네트워크 패킷 감지의 기초와 와이어샤크의 대표적인 기능들을 직접 만들어 이해할 필요가 있다.

개요

스니핑은 데이터를 송수신 하는 것을 감청하는 것이기 때문에 TCP나 UDP 통신이 반드시 이루어져야만 한다.
우리는 감청을 위해서 다음과 같은 조건을 반드시 만족해야 한다.

  1. 스니핑을 하기 위한 목표 컴퓨터가 작동을 하고 있어야 한다.
  2. 목표 컴퓨터가 패킷을 주고 받고 있어야한다.

먼저 1번을 만족하기 위해서는 대상 컴퓨터의 작동여부를 반드시 알아야한다.
이를 알아내기 위해서는 대상 컴퓨터에게 Ping을 보내는 방법이있다.

Ping은 ICMP 프로토콜을 사용하기 때문에 80 포트로 통신을 하게 된다면 대상 컴퓨터에서 정보를 송신할 것이다. 만약 데이터를 수신 했다면 대상 컴퓨터가 작동하고 있는 것이고, 만약 데이터를 수신하지 못했다면 대상 컴퓨터가 존재하지 않거나 어떠한 이유로 데이터 수신을 하지 못한것이다.

2번에서는 대상 컴퓨터가 패킷을 주고받는 상태여야 한다. 패킷을 주고받지 않는다면 데이터가 존재하지 않기 때문에 아무것도 가져올 수 없을 것이다.


남기는 말

요즘 전공 공부를 다시 시작 하여서 글 쓸 여유가 없었다. 물론 내가 게을리 한것도 있었지만 조회수는 있어도 댓글이 없기에 보는 사람이 있나 싶어서 현타가 올때도 있었다.
하지만 보안을 배우고 싶어하는 누군가가 내 글을 봐줄 것이라는 믿음을 가지고 다시 글을 더 써보려고 한다. 전공 공부 때문에 새벽 시간에 겨우 올리게 될거고 업데이트는 좀 더 늦어질거라고 보고 있다.

profile
비전공자의 코딩 도전기

0개의 댓글