Notice
Recent Posts
Recent Comments
Link
- lumenFC 축구 동호회
- 마샤블
- 웍스프레소
- 소셜@나눔<소셜미디어나눔연구소>
- 리버스코어
- LAIN
- LAIN 이사한 블로그
- TeamCR@K
- Sunnyday
- 보안 걱정이
- 리버싱 학습
- securityfirst_jo
- Practical Security Blog
- 세상, 그 유쾌한 전장
- 악성코드관련블로그
- Back to the Mac
- 패킷분석입문
- PacketInside / 네트워크 패킷 분석 블로그
- 침해사고분석 :: 네이버 블로그
- 소프트웨어 기술자경력관리시스템
- JK.Moon
- 자바 온라인학습
- Ezbeat의 도서관
- Dreams of a Final Journey
- IT eBooks - Free Download - Bi…
- Index of /madchat/coding/rever…
- Security Insight
- Reversing war game
- 고길고기
- clamav
- zerowine
- FORENSIC-PROOOF
- jquery 예제
- 조대협의블로그
- 국가과학기술인력개발원 교육포털 사이트
- 빅데이터, splunk
- 지식을 연주하는 사람
- malware analysis system
- 건국대토익스피킹
- 소프트웨어개발 및 협업도구
kisoo
RealTek network driver 충돌현상 본문
winpcap 사용하여 네트워크 패킷을 모니터링 하는 프로그램을 만들어서 사이트에 배포를 했었다.
일전에도 비슷한 기능을 하는 프로그램을 만들어서 배포 했었기에 별다른 문제가 없을 것으로 판단 했다.
그러나 전혀 의외의 문제가 발생했다.
네트워크 연결이 끊어지거나 인터넷이 안되는 현상 이었다.
도저히 상식적으로 이해가 가질 않았다. 패킷을 단순히 read 하는 역할만 했기에 왜 이러한 현상이 발생하는지
원인분석을 해보았다.
약 300대의 PC를 조사한 결과 문제가 발생한는 PC에서 동일한 네트워크 카드를 사용하였고, 특정 드라이버 버전이 설치된 PC 에서만 이러한 현상이 발생했다.
문제가 발생한 PC를 할당받아서 분석 한 결과 문제는 PCAP 이 문제가 아니었다.
PACKET 를 READ ( pcap_next_ex) 하여 IP Spoofing 을 체크하는 로직이 있는데 , 여기서 GetAdaptersInfo 함수를
사용하고 있었다.
패킷이 들어올때마다 GetAdaptersInfo 를 호출하니 트래픽이 많을 때 끊기는 것이었다.
이 함수의 내부에서는 network adapter 에 정보를 요청할 것이고 드라이버에서 해당 정보를 올려주는 것으로 보인다.
근데 이 부분에서 드라이버의 버그가 있었던 것이고...드라이버가 hang 걸리면서 hardware error or request timed out 이 되어 버리는 것이다.
이 로직을 개선 하고 패치 한 후에 더이상 문제가 발생 하지 않았다.
결론은 간단했지만 이 문제를 분석하는데에 pcap 부분만 중점적으로 보다보니 소스를 전체 리뷰 하는 것을 놓치고 말았다. promiscuous mode 일때에는 증상이 더욱 빨리 나타났기에....
삽질 3일~~
지금까지 네트워크 GetAdapterInfo 함수를 1만번 호출해보자.
일전에도 비슷한 기능을 하는 프로그램을 만들어서 배포 했었기에 별다른 문제가 없을 것으로 판단 했다.
그러나 전혀 의외의 문제가 발생했다.
네트워크 연결이 끊어지거나 인터넷이 안되는 현상 이었다.
도저히 상식적으로 이해가 가질 않았다. 패킷을 단순히 read 하는 역할만 했기에 왜 이러한 현상이 발생하는지
원인분석을 해보았다.
약 300대의 PC를 조사한 결과 문제가 발생한는 PC에서 동일한 네트워크 카드를 사용하였고, 특정 드라이버 버전이 설치된 PC 에서만 이러한 현상이 발생했다.
문제가 발생한 PC를 할당받아서 분석 한 결과 문제는 PCAP 이 문제가 아니었다.
PACKET 를 READ ( pcap_next_ex) 하여 IP Spoofing 을 체크하는 로직이 있는데 , 여기서 GetAdaptersInfo 함수를
사용하고 있었다.
패킷이 들어올때마다 GetAdaptersInfo 를 호출하니 트래픽이 많을 때 끊기는 것이었다.
이 함수의 내부에서는 network adapter 에 정보를 요청할 것이고 드라이버에서 해당 정보를 올려주는 것으로 보인다.
근데 이 부분에서 드라이버의 버그가 있었던 것이고...드라이버가 hang 걸리면서 hardware error or request timed out 이 되어 버리는 것이다.
이 로직을 개선 하고 패치 한 후에 더이상 문제가 발생 하지 않았다.
결론은 간단했지만 이 문제를 분석하는데에 pcap 부분만 중점적으로 보다보니 소스를 전체 리뷰 하는 것을 놓치고 말았다. promiscuous mode 일때에는 증상이 더욱 빨리 나타났기에....
삽질 3일~~
지금까지 네트워크 GetAdapterInfo 함수를 1만번 호출해보자.
Comments