리눅스 커널 소스 재 질문

ksc97의 이미지

제가 하는 프로젝트는 우선 VoIP를 사용하여 사용자(클라이언트)가 서버에 접

속하여 인터넷폰을 사용하는데..중간에 즉 해커가 사용자 대신 사용하는것으로

VoIP에 사용되는 SIP에서 사용되는 HTTP Authentication의 취약점을 공격하

는 프로젝트입니다.

즉 하려는 것은 해커의 컴퓨터가 라우터가 되어서 클라이언트가 서버로 패킷을

보내면 라우터로 거치게 되고 라우터는 소스 아이피를 라우터 아이피로 해서 서

버로 보내게 됩니다. 그럼 서버는 클라이언트에 대한 인증이 필요하기 때문에

라우터로 패킷을 보내면 라우터가 받아서 다시 목적지 아이피를 클라이언트

로 해서 클라이언트로 보내게 되고 클라이언트는 인증키를 보내게 됩니다.

그래서 라우터는 클라이언트가 보낸 인증키를 이용하여 클라이언트 대신 서버

와 접속을 하게되는 것인데요...이런 라우터 기능을 하게 하려면 리눅스커널

소스를 수정하면 된다구 하던데..어디서 손을 봐야하는지 캄캄해서 이렇게 글을 올립니다..

많은 조언 부탁드립니다.

acetcom의 이미지

일단 글 중에 틀린 내용이 있습니다. 라우터는 Source IP Address는 수정하지 않습니다. 그냥 Source MAC Address를 Routing Interface의 MAC Address로 수정하여 보냅니다.

SIP가 정확히 어떤 뜻인지는 모르겠으나, Source IP Address를 뜻하나요? VoIP서버가 클라이언트를 식별하는 인자가 Source IP Address라면, 해킹을 위해 Routing시에 Source IP Address도 수정해야 합니다. 그리고, Source IP Address를 수정하려면, 리눅스에서 route명령어로 static route path를 설정하였을 때, 리눅스 커널의 TCP/IP Stack의 IP Routing Path를 수정해야 할 것입니다. 다시 말해서, 리눅스 커널을 고쳐야겠죠.

그러나, 이는 클라이언트, 라우터, 서버가 in-line으로 구성되어 있을 때에만 가능한 얘기입니다. 만약, ksc97님이 실제 VoIP의 가입자이고 제가 저희집에서 이를 해킹하려고 리눅스로 라우터를 구성했다고 합시다. 이런 구성에서는 해킹이 불가능할 것입니다.(혹시 다른 좋은 생각이 있는지는 모르겠지만...)

인터넷의 라우터은 점구성으로 되어 있습니다. 그리고, BGP4 프로토콜에 의해 Path가 결정되고 IP Routing Table에 각각 적용하여 서로 IP통신을 가능하게 합니다.(아 이거 말로 쓰려니 되게 힘드네요..)

만약 제가 리눅스를 설치하고 GNU zebra를 올려서 BGP4가 돌게 하고, 라우터인척 했다고 가정합시다. 그러나, 라우터끼리는 서로 neighbor임을 지정해 주어야 합니다. 그러나 저희 집 ADSL라인 위에 있는 라우터는 BGP4가 돌지 않을 가능성이 높고(RIP/OSPF만 돌 가능성이 높고, 실제로는 이것도 안 돌고 있지 싶습니다.) 설령 돌고 있다고 해도 그 위에 라우터가 저를 neighbor로 지정해 놓았을 리가 없습니다. 만약 지정했다면 저희집에서 인터넷망도 망가뜨리를 수 있으니까요. 따라서, 인터넷망에서 ksc97님의 컴퓨터가 저희 집에 있는 라우터로 라우팅되어 VoIP서버로 IP통신하게 우회하도록 할 수는 없습니다. (약간 어려운 얘기가 되 버렸나요? 제가 설명을 잘 못해서리..)

암튼, 실제 리얼 인터넷환경에서는 해킹이 안되고 실험실 환경에서 in-line으로 연결해서 할꺼면 간단히 데모를 보여줄 수는 있겠네요.

그럼.

chunsj의 이미지

SIP는 Session Initiation Protocol이 아닐까요? 제생각에도 쉽게 될 것
같지는(적어도) 않습니다. 쓴 글을 보면 spoofing에 가까운 것 같은데...

acetcom wrote:
일단 글 중에 틀린 내용이 있습니다. 라우터는 Source IP Address는 수정하지 않습니다. 그냥 Source MAC Address를 Routing Interface의 MAC Address로 수정하여 보냅니다.

SIP가 정확히 어떤 뜻인지는 모르겠으나, Source IP Address를 뜻하나요? VoIP서버가 클라이언트를 식별하는 인자가 Source IP Address라면, 해킹을 위해 Routing시에 Source IP Address도 수정해야 합니다. 그리고, Source IP Address를 수정하려면, 리눅스에서 route명령어로 static route path를 설정하였을 때, 리눅스 커널의 TCP/IP Stack의 IP Routing Path를 수정해야 할 것입니다. 다시 말해서, 리눅스 커널을 고쳐야겠죠.

그러나, 이는 클라이언트, 라우터, 서버가 in-line으로 구성되어 있을 때에만 가능한 얘기입니다. 만약, ksc97님이 실제 VoIP의 가입자이고 제가 저희집에서 이를 해킹하려고 리눅스로 라우터를 구성했다고 합시다. 이런 구성에서는 해킹이 불가능할 것입니다.(혹시 다른 좋은 생각이 있는지는 모르겠지만...)

인터넷의 라우터은 점구성으로 되어 있습니다. 그리고, BGP4 프로토콜에 의해 Path가 결정되고 IP Routing Table에 각각 적용하여 서로 IP통신을 가능하게 합니다.(아 이거 말로 쓰려니 되게 힘드네요..)

만약 제가 리눅스를 설치하고 GNU zebra를 올려서 BGP4가 돌게 하고, 라우터인척 했다고 가정합시다. 그러나, 라우터끼리는 서로 neighbor임을 지정해 주어야 합니다. 그러나 저희 집 ADSL라인 위에 있는 라우터는 BGP4가 돌지 않을 가능성이 높고(RIP/OSPF만 돌 가능성이 높고, 실제로는 이것도 안 돌고 있지 싶습니다.) 설령 돌고 있다고 해도 그 위에 라우터가 저를 neighbor로 지정해 놓았을 리가 없습니다. 만약 지정했다면 저희집에서 인터넷망도 망가뜨리를 수 있으니까요. 따라서, 인터넷망에서 ksc97님의 컴퓨터가 저희 집에 있는 라우터로 라우팅되어 VoIP서버로 IP통신하게 우회하도록 할 수는 없습니다. (약간 어려운 얘기가 되 버렸나요? 제가 설명을 잘 못해서리..)

암튼, 실제 리얼 인터넷환경에서는 해킹이 안되고 실험실 환경에서 in-line으로 연결해서 할꺼면 간단히 데모를 보여줄 수는 있겠네요.

그럼.

최피디의 이미지

iptables 기능을 이용해서 오는 패킷을 검사해서 처리해줄 수 있을 것 같습니다.

레드햇9을 설치하니 따로 방화벽(라우터)를 설치할 필요없이 기본으로 지원됩니다. 따루 커널 수정해 주실 필요가 있는지 모르겠습니다.

KT하이텔, 앱스 개발자

acetcom의 이미지

SIP가 Session Initiation Protocol라는 뜻인가요? 그렇다면 왜 라우터가 IP Spoofing을 해야 하는거죠? 흠..갑자기 질문의 의도가 헤깔려 버리내요.

암튼 라우터 얘기는 적어 놓았으니..이제 IP Spoofing에 대해 설명해 볼께요.
이것도 아주 간단히 적을께요..시간이 별로 없어서..

IP Spoofing은 말그대로 Source IP를 속이는 겁니다. 그리고, 이는 네트워크 구성입장에서는 라우터 아래에 놓인 단말(컴퓨터)끼리 일때만 가능합니다.

그러니까 위에 설명한 것 중에서 VoIP가입자-해커의 라우터-VoIP서버가 모두 같은 네트워크일 때 가능한 이야기입니다. 같은 네트워크라는 뜻을 자세히 설명해 보면, 만약 제가 63.73.72.x/24네트워크 안에 있고, 게이트웨이가(제 컴퓨터 위에 있는 라우팅 인터페이스의 IP겠죠) 63.73.72.254라면(저희집이 이렇게 구성되어 있습니다.) 63.73.72.1-63.73.72.253까지가 같은 네트워크이겠죠.

그리고, 여기서도 제가 tcpdump와 같은 프로그램을 promisc-mode로 돌렸을 때, 같은 네트워크의 패킷을 볼 수 있는 곳이 있고, 없는 곳이 있습니다. 만약 같은 네트워크에 있는 다른 컴퓨터의 패킷을 볼 수 있는 지역은 IP Spoofing이 무조건 가능하구요, 그렇지 않은 지역은 좀 복잡합니다.

아무튼 같은 네트워크 지역에서 다른 컴퓨터의 패킷을 볼 수 있으면 hunt라는 프로그램으로 쉽게 IP Spoofing을 할 수 있지만, 없다면, mendax라는 프로그램을 써야 되는데 이럴 경우는 rsh, rlogin 등과 같이 IP로 인증하는 곳에서만 사용가능한거구요.

에구 설명할려니 힘드네..정말루 매우 간단히 IP Spoofing을 설명해 보았는데, 더 자세하게는 인터넷 등에서 문서를 참고하세요. 저의 경우 VoIP의 프로토콜 방식을 정확히 이해하고 있지 않아 아이디어가 떠오르지는 않네요. (이쪽 바닥을 떠난지도 좀 오래되었구요..^^;)

그럼.

댓글 달기

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