raw socket 사용시 질문~

sunbee의 이미지

제가 raw socket을 생성해서 source ip 를 속여서 udp로 다른 사이트에 메세지를 보낼려고 하는데요..

tcpdump 로 패킷이 나가는지 확실히 확인을 했는데 받는쪽에서는 패킷이 안들어 오네여..

왜 이런겁니까?

pynoos의 이미지

받는 쪽에서 tcpdump 로 수신은 제대로 되나요?

만약 잘되는데 application으로 올라가지 않는 다면..

Check sum이 제대로 안된 것이 아닐까요?
pseudo header를 가지고 만들고 있는지 확인해보세요.

errai의 이미지

경우의 수가 세가지 있겠네요.

1. 받는 호스트에서 Drop 시킴
패킷 생성이 잘못되어 받는 호스트에서 Drop 시키는 경우입니다.

2. 라우터에서 Drop 시킴
라우터 설정에 따라 Source ip가 spoofing되었다고 판단하면
Drop시키는 경우도 있습니다.

3. UDP 특성상 패킷이 손실되었다.
local network에서도 udp 패킷은 많이 사라지더라구요.

가장 확실한건 받는 호스트 쪽에서도 Tcpdump를 띄워서
확인 해보시는 겁니다.

sunbee의 이미지

하지만 들어오지 않았습니다..

ㅡㅡ;;

어떻게 할 수가 없군요...

pynoos의 이미지

확실히 나가는 장면에 대한 tcpdump를 보여주시겠습니까?

iyouhe의 이미지

기존 패킷에서 어느 정보가 변경되면 체크섬도 변해야 하는 걸로 알고 있습니다.
체크섬을 변경전 값을 그대로 사용하셨다면 받는 쪽에서 드롭 될것입니다.

배울수 있어서 좋다.

datamind의 이미지

어떻게 구현을 했는지 소스를 올려주세요..
빠진부분이 있으신것 같은데...

카二리의 이미지

해커즈랩에서 본거 같은 문제인듯 한대. 로우소켓이라..

어렵네요 :(

새 생각 :)

sunbee의 이미지

잡히지 않습니다..

그럼 중간에 유실된다는 말인데..

udp 라서 유실되는것 같지는 않고요.. (패킷을 계속 보내봤슴다.)

아마 중간에서 어떤이유에서 버려지는것 같은데....

혹시 라우터에서 checksum 체크하여 버려지는거는 아닌가 의심이 가는군요....

pynoos의 이미지

Test를 local에서 하시는 것 아닌가요?

local에서라면 단지 hub를 거쳐서 도달할 것 같은데...

datamind의 이미지

패킷을 잘 만드셨는지 궁금하네요..
잘 만들었다면,
잘 될겁니다... 쩝 -_-;;

많은 시행차고를 하시길...

sunbee의 이미지

제 PC 에서 tcpdump 로 잡은값

13:46:59.110956 203.239.110.2.1234 > 210.110.136.135.5555: udp 33
4500 003d 414b 0000 3c11 a87d cbef 6e02
d26e 8887 04d2 15b3 0029 dbc5 4265 6175
7479 2061 6e64 2042 6561 7374 2f73 696d
6865 6540 6461 756d 2e6e 6574 00

상대편 host에서는 잡히지 않음.

근데 나가는 패킷을 보니 완벽하지가 못한것 같네여.. 책을 봐야겠슴다.

고도리의 이미지

제 경험상으로는 대부분 패킷이 버려지는 이유는
checksum이 잘 못되어 있는 경우 입니다.

특히 님과 같이 장난(?)을 하는 프로그램에서는 대부분
그경우가 많이 발생하지요...

일단 sniffer같은 프로그램을 이용해서 컴퓨터상에서
나가는 패킷의 checksum을 확인하세요.

그리고, ip spoofing 소스를 보면 checksum을 하는 부분이
있습니다. in_cksum()함수가 있을 텐데 이 함수를 이용하는
방법과 예제가 있을 겁니다.

그 것을 참조하시기 바랍니다.

ps> ip spoofing 소스는 www.rootshell.com이랑, hitel 리눅스
동호회 보안쪽에 있었는데 지금은 어디서 구하나 모르겠군요.

서명.....음, 서명이라...

아싸!!! Three Go!

sunbee의 이미지

tcpdump 에서 사용하는 checksum 함수인 in_cksum(..)입니다.

^^;;

위의 패킷을 분석해본결과 이상이 없는걸로 생각이 드는데요..

다른 고수님의 생각은 어떻습니까?

pynoos의 이미지

Quote:

13:46:59.110956 xxx.xxx.110.2.1234 > yyy.yyy.136.135.5555: udp 33
4500 003d 414b 0000 3c11 a87d cbef 6e02
d26e 8887 04d2 15b3 0029 dbc5 4265 6175
7479 2061 6e64 2042 6561 7374 2f73 696d
6865 6540 6461 756d 2e6e 6574 00

과거에 저도 풀었던 문제인데..
너무 정직하게 IP를 공개하셨군요.. ^^

진작 보여주시면 더 쉽게 문제에 접근할 텐데 먼 길을 돌아 오는 군요.

아뭏든 yyy.yyy.136.135 가 sunbee 님이 도달 시키길 원하시는
IP 죠?

확인해야할 host에 정상적인 UDP 들은 제대로 들어 가나요?

음.. 예를 들어 udp 를 정상적으로 보낼 수 있는 것이 nslookup이 있는데..
linux에서

$ nslookup - yyy.yyy.136.135
> set port=5555
> test

이렇게 했을 경우 정상적인 DNS query를 UDP port 5555로 날리게 됩니다.

이건 제대로 도달하지요? 요게 제대로 도달하는데 만약 sunbee님의 프로그램이 전송을 못한다면, 그것은 program을 잘못 작성하신거구요.

이것도 제대로 도달하지 않는다면, 중간에서 뭔가가 5555번 port를 막고 있는 겁니다.

가깝게는 ipchains 에 걸려있을 수 있구요.
유성구 유성우체국 사서함 122호를 사용하는 기관정도면..
방화벽에 걸릴 수도 있구요.

고생하세요....

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.