http://sua.securityplus.or.kr/sua/bbs/board.php?bo_table=sua_notice&wr_id=13


제가 Securityplus Union Academy에서 멘토링 리스트에 추가되었습니다. 이에 몇몇 분이 멘토링을 저에게 신청을 하였는데요, 학교, 학원, 과외, ...모든 것이 마찬가지이겠지만, 저 또한 처음부터 끝까지 모든 것을 일일이 알려 드릴 수가 없습니다. OSI Layer에서부터 시작하는 네트워크 이론이나 pcap & wireshark 설치와 같은 실무적인 부분을 처음부터 알려 드리지 않고,  많은 부분에 있어서 여러분 스스로 하셔야 합니다.


이에 멘토링에 참여할 수 있는 최소한의 요건을 정리해 보았습니다.


1. pcap API의 숙지


http://www.winpcap.org > WinPcap > Documentation > The WinPcap manual and tutorial for WinPcap 4.1.2 > step by step의 9가지 예제를 직접 코등해 보고 pcap API을 숙지할 것


  • Obtaining the device list
  • Obtaining advanced information about installed devices
  • Opening an adapter and capturing the packets
  • Capturing the packets without the callback
  • Filtering the traffic
  • Interpreting the packets
  • Handling offline dump files
  • Sending Packets
  • Gathering Statistics on the network traffic




2. 리포트 제출


다음에 열거된 프로그램 중 일부를 작성하여, 그 소스와 관련 문서를 github.com에 올리고 URL을 제출할 것( gilgil1973 at gmail.com ).

  • 프로그래밍 언어 기본은 스스로 익힐 것(컴파일러가 뭐에요? 포인터가 뭐에요? 이런 질문을 하는 레벨의 사람은 멘티 자격 미달인 것으로 간주).
  • 절대 다른데서 코드를 베껴서 제출하지 말 것(베껴 낸 사람은 질문 몇개 던지면 탄로남).
  • 학교, 회사 생활때문에 시간 없다고 하지 말 것(시간날 때 하는 게 아니고 시간 내어서 해야 하는 것임).
  • 프로그래밍 언어는 C/C++ 권장.




A. 송수신되는 패킷을 잡아서 IP 별 통계를 내는 프로그램 작성(초급 - 만점 5점).

  • pcap API나 raw socket API를 이용할 것.
  • 네트워크 트래픽이 많은 IP부터 "ip / bps / pps"를 차례대로 출력할 것.




B. 송수신되는 패킷을 잡아서 URL을 추출해 내는 프로그램 작성(초급 - 만점 5점).

  • pcap API나 raw socket API를 이용할 것.




C. 임의의 사이트(예 : naver.com)에 들어 갈 때의 패킷을 잡아서 해당 페이지의 그림 파일(.png, .jpg 등)을 추출하는 프로그램 작성(중 - 만점 10점)

  • TCP Header의 sequence number, acknowledge number 값의 역할을 숙지할 것.
  • pcap API나 raw socket API를 이용할 것.




D. 간단한 L3 스위치 작성(중급 - 15점)

  • 2개의 NIC interface에서 패킷을 잡아서 다른 interface로 IP 패킷을 forwarding 시켜 줄 것.
  • ethernet 환경으로 제한하며, forwarding시킬 때 MAC 주소는 해당 NIC의 MAC주소로 변경시킬 것.
  • IP Header의 TTL 값을 감소시켜 forwarding할 것.
  • 가능하다면 IP/Port 정보를 변경시켜 forwarding해 볼 것(NAT 장비나 방화벽 stateful 방식의 기본을 숙지할 수 있음).




E. 유해 사이트 domain이 100만개 있다고 가정을 하고, 사용자로부터 domain을 입력받아서 입력값이 유해 사이트 domain 목록에 들어 있는지 판별하는 함수를 작성(고급 - 만점 20점).

  • 판별 속도는 빠르게 할 것(필수 - sequential search 나 binary search와 같은 간단한 방법보다 개선된 방안 찾아 볼 것).
  • 메모리는 적게 차지할 것(옵션).