커널 레벨(kernel level)에서 네트워크 패킷(packet)을 잡으려면..

강인태의 이미지

커널 레벨에서 네트워크 패킷을 잡으려고 합니다.
단순히 잡기만하는게 아니라 궁긍적으로는 수정등도 해보려고 하는데..

패킷을 캡쳐하거나 필터링하는게 libpcap 같이 유저레벨에는 좀 있는데
커널레벨쪽은 어떻게 해야하는지 잘 모르겠네요..

어떻게 해야될까요?

whiterock의 이미지

Netfilter 쪽을 공부를 해보시죠..

흐음...

mach의 이미지

여러가지 방법이 있습니다만,
libipq를 사용해보세요.
1) netfilter의 iptables 유틸리티를 이용해 잡고자 하는 패킷을 기술하고(또는 libiptc 라이브러리로 이용해 기술할 수도 있습니다) 이를, QUEUE 타겟으로 룰을 등록하고(이 순간이후 조건에 맞는 모든 패킷은 QUEUE로 보내집니다.)
2) 사용자 영역에서 libipq를 이용해서(라이브러리지요) QUEUE에서 읽기대기하면 커널이 보내온 패킷을 수신하게 됩니다.
3) 수신된 패킷을 적절히 핸들링하고...(필터링/변경등)
4) 다시 커널로 inject하면 됩니다.

*libipq 매뉴얼이나, 문서등을 보면 간단한 예제도 있으니, 참고하시길.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

익명사용자의 이미지

커널레벨에서 직접 하시려면 netfilter훅을 이용하세요.
아니면 netfilter 타겟으로 만들어도 되죠. SNAT, DNAT등 주소변환하는 타겟들을 보시면 참고가 될겁니다.

jika의 이미지

넷필터 후킹포인트에서 skb_buff 구조체로 패킷을 가져올수 있습니다.

후킹포인트는 첨부파일 참조 하시면 될껍니다.

아래 문서 한번 읽어보시면 도움이 될듯합니다.

http://www.zdnet.co.kr/builder/platform/nix/0,39031679,39136665,00.htm

Lightstar의 이미지

저도 packet을 허용, 드랍하는 정책을 이용하는 방화벽을 윈도우상에서 만들어보려고하는데 netfilter는 리눅스 모듈인거 같더라구요.
윈도우7기준으로 방화벽 어플을 만들어보려면 어떤걸 찾아봐야할까요?
Winpcap같은건 스니핑만 되고 수정, 드랍같은건 안되는거 같은데...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.