KR100879123B1 - Dce rpc 객체의 퍼징 시스템 및 방법 - Google Patents

Dce rpc 객체의 퍼징 시스템 및 방법 Download PDF

Info

Publication number
KR100879123B1
KR100879123B1 KR1020070038384A KR20070038384A KR100879123B1 KR 100879123 B1 KR100879123 B1 KR 100879123B1 KR 1020070038384 A KR1020070038384 A KR 1020070038384A KR 20070038384 A KR20070038384 A KR 20070038384A KR 100879123 B1 KR100879123 B1 KR 100879123B1
Authority
KR
South Korea
Prior art keywords
rpc
file
packet
idl
dce
Prior art date
Application number
KR1020070038384A
Other languages
English (en)
Other versions
KR20080094230A (ko
Inventor
양진석
김태균
김형천
홍순좌
이도훈
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020070038384A priority Critical patent/KR100879123B1/ko
Priority to US11/963,927 priority patent/US7975273B2/en
Publication of KR20080094230A publication Critical patent/KR20080094230A/ko
Application granted granted Critical
Publication of KR100879123B1 publication Critical patent/KR100879123B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 DCE(Distributed Computing Environment) RPC(Remote Procedure Call) 객체의 퍼징 시스템 및 방법에 관한 것으로서, 파일 매니저(File Manager)에서 DCE RPC 퍼징 및 통신시 필수적으로 요구되는 UUID(Universal Unique IDentifier), 인터페이스 버전(version), Op number를 idl 파일을 참조하여 획득하고, 획득한 정보들을 통신 메커니즘을 구성하는 패킷 크리에이터(Packet Creator)에서 사용하고 DCE RPC 접근 메커니즘을 완성하며, 이후 난수를 처리하는 랜덤 데이터 제너레이터(Random Data Generator)의 난수를 주입하고 패킷 인젝터(Packet Injector)에 구성된 데이터를 인자로 하여 함수를 호출하여 퍼징을 수행함으로써, 기존의 DCE RPC 객체 퍼징 시 전문가의 개입이 필요한 부분을 자동화하여 퍼징 시간 및 비용을 감소할 수 있다.
DCE(Distributed Computing Environment), RPC(Remote Procedure Call), 퍼징(fuzzing)

Description

DCE RPC 객체의 퍼징 시스템 및 방법{FUZZING SYSTEM AND METHOD OF DISTRIBUTED COMPUTING ENVIRONMENT REMOTE PROCEDURE CALL OBJECT}
도 1은 ROAD 시스템의 전체 구성도,
도 2는 파일 매니저 모듈의 동작 순서도,
도 3은 랜덤 데이터 제너레이터 모듈의 동작 순서도,
도 4는 패킷 크리에이터 모듈과 패킷 인젝터 모듈의 동작 순서도,
도 5는 idl 파일의 일반적인 정의 방법,
도 6은 Op number를 획득하기 위한 알고리즘,
도 7은 UUID와 named pipe가 사상된 데이터 셋,
도 8은 전체시스템의 동작 순서도이다.
본 발명은 DCE RPC 객체의 퍼징 시스템 및 방법에 관한 것으로, 더욱 상세하게는 DCE RPC 객체 퍼징 시 idl 파일을 분석하여 필요한 정보를 얻어오는 부분을 자동화한 DCE RPC 객체의 퍼징 시스템 및 방법에 관한 것이다.
퍼징(fuzzing)이란, 보안 테스팅의 한 방법으로 소프트웨어 혹은 파일 등의 함수에 무작위 값을 입력하여 테스트 대상이 적절히 동작하는지를 실험하는 테스팅 기법이다.
기존의 DCE RPC 퍼징 도구들은 사용자가 RPC 기반 소프트웨어의 원격 접근 메커니즘을 분석한다. 이후, 분석된 접근 메커니즘을 구현하여 테스트하고 테스트 패킷을 분석하여 필요한 정보를 수집하여 수정하고, 다시 분석하고 수정하여 구현하는 단계를 거친다. 이와 같은 단계를 거치는 이유는 DCE RPC 접근 메커니즘이 운영체제에 의존적이기 때문이다.
이 때문에 기존의 DCE RPC 퍼징 도구들은 구현된 접근 메커니즘이 틀릴 경우 퍼징 대상이 되는 컴퓨터에 접근조차 못하게 되는 경우가 존재하며 이를 위해 패킷 레벨의 분석을 통해 접근 메커니즘을 분석하고 수정하여 퍼징하게 된다. 뿐만 아니라 DCE RPC 관련 서비스 함수 퍼징 시 일련의 단계를 거치는데 이 때 필요한 UUID와 인터페이스 버전 등의 정보를 사용자가 직접 찾아 입력한 후 퍼징하였다. 이러한 정보를 찾아내어 입력하기 위해서는 DCE RPC 메커니즘에 대해서 이해하고 정보를 찾아내는 방법 및 도구의 사용법에 대해서도 숙지해야 가능하다.
이와 같이, 기존의 원격 DCE RPC 퍼징 시, 테스팅 대상에 대한 이해가 필요하고 도구 사용 시 퍼징 도구를 수정해야 하는 불편함이 있었다. 이러한 과정에서 전문가의 개입이 많고 테스팅까지의 시간을 많이 소비하는 단점이 존재하였다. 즉, 기존의 퍼징 방법은 퍼징까지의 시간과 비용 측면에서 효율성이 매우 떨어지고, 관련 도구 사용 시 도구를 수정해야만 사용가능하고 수정을 위해서 소진하는 시간 및 비용 측면에서 효율성이 매우 떨어진다.
따라서, 본 발명은 상기한 종래 기술의 문제점을 해결하기 위해 이루어진 것으로서, 본 발명의 목적은 DCE RPC 객체 퍼징 시 idl 파일을 분석하여 필요한 정보를 얻고, 이 정보를 이용하여 RPC 기반의 접근 메커니즘을 구현하여 시스템 퍼징 시 발생하는 비용 및 시간을 단축하는 DCE RPC 객체의 퍼징 시스템 및 방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 DCE RPC 객체의 퍼징 시스템은, 퍼징(fuzzing) 대상 객체에 대한 idl 파일 및 Named Pipe 파일을 포함하는 정보가 존재하는 파일을 파싱(parsing) 및 분석하여 필요 정보를 획득하는 파일 매니저(File Manager)과, 시스템 클럭을 인자로 난수 값을 생성하는 랜덤 데이터 제너레이터(Random Data Generator)과, RPC(Remote Procedure Call) 통신시 사용되는 프로토콜을 함수별로 구현함과 아울러 RPC 통신을 하기 위한 RPC 패킷을 생성하는 RPC 패킷 크리에이터(RPC Packet Creator)과, 상기 생성된 RPC 패킷에 상기 필요 정보 및 난수 값을 주입하여 상기 퍼징 대상 객체에 전송하는 패킷 인젝터(Packet Injector)를 포함하여 이루어진 것을 특징으로 한다.
한편, 본 발명의 DCE RPC 객체의 퍼징 방법은, 파일 매니저에서 퍼징(fuzzing) 대상 객체에 대한 idl 파일 및 Named Pipe 파일을 포함하는 정보가 존재하는 파일에서 필요 정보를 획득함과 아울러, 랜덤 데이터 제너레이터(Random Data Generator)에서 난수 값을 생성하는 단계와, 상기 RPC(Remote Procedure Call) 통신을 위해 RPC 패킷 크리에이터(RPC Packet Creator)에서 생성한 RPC 패킷에 패킷 인젝터(Packet Injector)가 상기 필요 정보 및 난수 값을 주입하여 상기 퍼징 대상 객체에 전송하는 단계를 포함하여 이루어진 것을 특징으로 한다.
이하, 본 발명의 DCE RPC 객체의 퍼징 시스템 및 방법에 대하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 ROAD(RPC Object vulnerability Atomatic Detector) 시스템의 전체 구성도이다.
도 1에 도시된 바와 같이, 본 발명의 DCE RPC 객체의 퍼징 시스템은 크게, 파일 매니저(File Manager), 랜덤 데이터 제너레이터(Random Data Generator), RPC 패킷 크리에이터(RPC Packet Creator) 및 패킷 인젝터(Packet Injector)로 구성되어 있다.
파일 매니저(File Manager)는 idl 파일과 Named Pipe 관련 정보가 존재하는 파일을 파싱하는 IDL 파서(Interface Definition Language Parser) 및 NMP 파서(Network Management Protocol Parser)와, idl 파일과 Named pipe 파일을 분석하 여 필요한 정보를 리턴하는 IDL 분석기(Interface Definition Language Analyzer) 및 NMP 분석기(Network Management Protocol Analyzer)로 구성되어 있다.
랜덤 데이터 제너레이터(Random Data Generator)는 난수 값 혹은 미리 정의된 공격 문자열을 처리하는 랜덤 제너레이터(Random Data Generator)와, 사용자 지정의 입력을 처리하는 사용자 지정 제너레이터(User Defined generator)로 구성되어 있다.
RPC 패킷 크리에이터(RPC Packet Creator)는 RPC 통신시 사용되는 SMB(Server Message Block) 프로토콜, RPC 프로토콜을 함수별로 구현해 놓은 RPC 프로토콜 분석기(RPC Protocol Analyzer)와, RPC 통신을 하기 위한 패킷을 재조합하는 RPC 프로토콜 크리에이터(RPC Protocol Creator)로 구성되어 있다.
패킷 인젝터(Packet Injector)는 Socket 생성, 바인드, 리슨, 억셉트 등 TCP 통신을 수행하기 위한 TCP 래퍼(TCP Wrapper)와, 퍼징 시 사용하는 데이터 구조를 정의하고 처리하는 함수를 구현한 리스너(Listener)로 구성되어 있다.
한편, 본 발명의 DCE RPC 객체의 퍼징 시스템에는 3개의 데이터 셋이 각 모듈에 작용되는데, 이에 대해 설명한다.
본 발명에서 데이터 셋은 idl 데이터 셋, NMPipe(Named Pipe) 데이터 셋, Random(난수) 데이터 셋으로 이루어져 있다. 각 모듈의 작용에 대해서 기술하기 전에 3개의 데이터 셋에 대해서 먼저 기술한다.
idl 데이터 셋
idl 데이터 셋은 퍼징 대상이 되는 RPC 기반 프로그램의 idl 파일을 말한다. idl 파일은 일반적으로 일정한 형식을 따르는데 기본적인 형식은 도 5에 도시된 바와 같다.
도 5를 참조하면, 본 발명은 idl 파일에서 idl 속성 정의부의 UUID, 인터페이스 버전 정보, idl 함수 정의부의 OP(Operation) number에 해당하는 함수의 개수에 대한 정보를 필요로 한다. 해당 정보들은 RPC 기반 서비스 접근 시 필수적인 정보이다.
Named Pipe 데이터 셋
Named Pipe 데이터 셋은 퍼징 대상 소프트웨어가 사용하는 UUID와 사상(mapping)되는 named pipe에 대한 정보를 입력한 데이터 셋이다. named pipe 데이터 셋 파일은 도 7과 같이 정의한다.
UUID와 사상되는 named pipe 정보는 인터넷 등에 공개되어 쉽게 습득이 가능하고 본 발명에서 RPC 기반 소프트웨어 퍼징 시 named pipe 데이터 셋 내에 UUID와 사상되는 named pipe 정보가 정의되어야 퍼징이 가능하다.
난수 데이터 셋
난수는 다양한 방법으로 처리가 가능하다. 본 발명에서는 미리 정의된 데이터 셋과 임의로 생성하는 데이터 셋 두 종류를 이용한다. 미리 정의된 데이터 셋은 이미 알려진 공격 문자열 데이터 셋을 의미하고 임의로 생성하는 데이터 셋은 임의 의 난수를 생성하는 함수를 이용하여 생성하는 데이터 셋을 의미한다.
: : fuzzstring("/.../.../.../.../.../"); fuzzstring("C:\\"); fuzzstring("C:"); fuzzstring("C:\\$Mft"); fuzzstring("../../../../../../../../../../../../etc/hosts%00"); fuzzstring("../../../../../../../../../../../../etc/hosts"); fuzzstring("../../../../../../../../../../../../etc/passwd%00"); fuzzstring("../../../../../../../../../../../../etc/passwd"); fuzzstring("../../../../../../../../../../../../etc/shadow%00"); fuzzstring("../../../../../../../../../../../../etc/shadow"); fuzzstring("../../../../../../../../../../../../boot.ini%00"); fuzzstring("../../../../../../../winnt/system32/"); fuzzstring("/localstart.asp%20"); /*old htw trick*/ fuzzstring("immunitysec.com"); fuzzstring(".immunitysec.com"); fuzzstring("\\\\*"); fuzzstring("\\\\?\\"); : : strcpy(buffer,"%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n"); fuzzstring(buffer); fuzzstring("%.50000x"); result = srand((unsigned)time(NULL)); : : r= 1 + (result%10); /*test*/ /*r=5;*/ memset(longstring,0x41,sizeof(longstring)); switch (r) { case 1: s_random_dce_string(); break; case 2: s_intelword(rand()); break; case 3: s_intelword(0); break; case 4: /*a guid sorta*/ s_binary("01020304050607080102030405060708"); break; : :
미리 정의된 데이터 셋의 예 난수 데이터 셋의 예
이 외에도 모든 테스트 케이스를 주입하기 위한 다음과 같은 데이터 셋이 존재한다.
사용자 정의의 입력 값 생성 함수 = f(xㆍy)
ㆍ : concatenate 연산자
x = { 0, 1, 2, ... ,a, f }
y : { 0, 1, 2, ... ,a, f }
상기 함수에서 x는 입력되는 한 바이트의 상위 4비트이고 y는 하위 4비트의 입력 값이다. 값을 각각의 값을 생성한 후 concatenate 연산자로 상위 4비트와 하위 4비트를 연결시켜 8비트로 만든 후 입력한다. 상기 함수를 이용하면 00~ff까지 모든 경우의 수를 테스트할 수 있다.
도 2는 파일 매니저(File Manager) 모듈의 동작 순서도이다.
도 2에 도시된 바와 같이, 파일 매니저(File Manager)는 퍼징 시 필요한 데이터를 수집하기 위해 idl 파일(IDL file)과 Named Pipe 파일(Nm pipe)을 분석하고 필요한 정보를 수집한다.
idl 파일 분석 시 해당 파일은 testing.idl 파일로 이름을 변경해야 하며, 이 파일을 파싱하여 UUID, Version, OP number와 같은 자동으로 실행할 시 필요한 정보를 얻어오는 처리를 수행한다. named Pipe는 퍼징 시 주어진 UUID와 일치하는 named pipe 정보를 얻어오기 위해 미리 정의한 named pipe 데이터 셋을 파싱하여 해당 UUID와 일치하는 named pipe의 정보를 얻어오는 처리를 수행한다. 파일 매니저(File Manager) 모듈의 실행 순서를 구체적으로 기술하면 다음과 같다.
① 퍼징 대상 소프트웨어의 idl 파일인 testing.idl 파일 존재 유무 검사
- 상기 ① 의 처리 과정은 퍼징 대상 소프트웨어에 대한 idl 파일이 존재하 는지 검사한다. 존재하는 경우 아래의 과정을 계속해서 진행하고 그렇지 않으면 임의의 uuid를 주입한다.
② idl 파일에 있는 인터페이스 버전 정보를 획득
- 도 5에서 보는 바와 같이 idl 속성 정의부에 정의되어 있는 version의 문자열을 파싱하여 인터페이스 버전 정보를 획득
③ 인터페이스 OP number를 획득
- 도 5에서보는 바와 같이 idl 함수 정의부에 정의되어 있는 함수의 개수를 획득하는데 이에 대한 알고리즘은 도 6에서 보는 바와 같다. 함수의 개수 즉, opnum 변수에 입력되는 값은 인터페이스 함수의 특징 상 최소한 하나 이상이며, 인터페이스 함수는 외부의 값을 입력받는 함수이므로 "[in" 키워드의 존재에 따라 함수의 개수를 정하였다. idl 파일이 존재할 경우에 최초 함수의 개수는 '0'으로 설정된다(S1). 이후, "[in" 키워드의 존재 여부를 판별하여(S2) "[in" 키워드가 존재할 경우에는 함수의 개수를 증가시키는 과정을 반복하여(S3~S4) 함수의 개수를 리턴한다(S5). 한편, "[in" 키워드의 존재 여부 판별 결과, "[in" 키워드가 존재하지 않을 경우에는 함수의 개수는 임의의 난수가 주입되게 된다(S6).
의 존재의 존재
④ 인터페이스 UUID를 획득
- 도 5에서 보는 바와 같이 idl 속성 정의부에 정의되어 있는 UUID의 문자열을 파싱하여 36바이트의 UUID를 획득한다.
⑤ UUID에 해당되는 Named pipe 정보 획득
- 도 7은 UUID와 named pipe가 사상된 데이터 셋이다. 상기 정보는 전 단계에서 획득한 UUID와 일치하는 named pipe를 검색하여 획득한다. 만약 일치하는 UUID가 없을 경우 임의의 36바이트를 입력한다.
도 3은 랜덤 데이터 제너레이터(Random Data Generator) 모듈의 동작 순서도이다.
도 3에 도시된 바와 같이, 랜덤 데이터 제너레이터(Random Data Generator)는 무작위 값을 생성하는 모듈이다. 생성된 무작위 값은 퍼징 대상이 되는 서비스의 인자 혹은 프로토콜 필드 등 퍼징 대상에 입력된다. 랜덤 데이터 제너레이터의 실행 순서는 다음과 같다.
① srand() 함수는 시스템 클럭을 인자로 난수 값을 생성한다.
- srand() 함수를 이용하여 난수를 생성하기 위해서는 time()함수를 이용하여 현재 시스템의 클럭 값을 생성하여 srand() 함수의 인자로 입력한다.
② init_fuzz() 함수는 시스템에서 기존의 취약한 문자열이나 다양한 난수 값을 저장하기 위해 정의된 버퍼를 초기화하는 역할을 수행한다.
③ random_select() 함수는 버퍼에 미리 생성된 난수 값 중 무작위로 선택한다.
- 상기 함수는 생성된 다수의 난수 값이나 미리 정의된 문자열 중 하나 이상을 무작위로 선택하고 이를 버퍼에 저장하는 역할을 수행한다.
도 4는 패킷 크리에이터(Packet creator) 모듈과 패킷 인젝터(Packet injector) 모듈의 동작 순서도이다.
도 4에 도시된 바와 같이, RPC 패킷 크리에이터(Packet creator) 모듈은 RPC 통신을 하기 위한 패킷을 생성하는 모듈로써, RPC 기반의 프로그램과의 통신을 위한 패킷을 파일 매니저(File Manager) 모듈과 랜덤 데이터 제너레이터(Random Data Generator) 모듈에서 얻은 값들을 버퍼에 저장하는 역할을 수행한다.
패킷 인젝터(Packet injector) 모듈은 버퍼에 저장된 무작위 값을 퍼징 대상 객체에 전송하는 역할을 수행한다. RPC 패킷 크리에이터 및 패킷 인젝터의 실행 순서는 다음과 같다.
① Main 함수에서 smb_nego() 함수를 호출하여 RPC 퍼징 대상 시스템과 SMB 프로토콜의 협상을 시작한다.
- RPC Packet Creator 모듈은 퍼징 대상 서비스에 접근하기 위해 SMB 통신 메커니즘을 구현하고 패킷을 구성하는 역할을 수행한다. SMB 레벨에서 서비스 접근 시 협상 과정, 세션 셋업 과정, Tree 연결 과정, Named pipe 접근 과정의 4단계를 거친다.
② Packet Creator는 SMB 및 RPC 바인드 패킷을 생성하고 push_buf() 함수를 호출하여 해당 패킷을 버퍼에 저장한다.
- SMB 레벨에서 4단계 수행을 위한 패킷을 생성하고 RPC 바인드 패킷을 생성한다. 또한 옵션에 따라 서비스 함수까지 호출가능하며 생성된 패킷을 버퍼에 입력한다.
③ Packet Injector는 버퍼에 저장된 패킷을 전송하기 위해 send_tcp() 함수를 호출하여 퍼징 대상 프로그램에 패킷을 전송한다.
- send_tcp() 함수는 생성된 패킷을 TCP 프로토콜을 이용하여 퍼징 대상이 되는 프로토콜에 전송하는 역할을 수행한다.
④ 퍼징 대상 프로토콜 혹은 소프트웨어는 전송 받은 패킷을 처리하고 응답을 수행한다.
⑤ RPC 기반 프로그램과 통신을 하기 위한 일련의 함수들 즉, smb_nego() 함수 호출 후, 세션 셋업 과정, Tree 연결 과정, Named pipe 접근 과정을 계속해서 수행하여 퍼징 대상 객체에 접근 후 기 삽입된 퍼징 데이터를 포함하여 패킷을 전송한다.
- 도 4에서 보는 바와 같이 퍼징 대상과 통신을 위한 일련의 절차인 SMB 레벨에서 4단계 함수를 계속해서 호출하고 DCE RPC 바인딩 과정을 위한 함수를 호출한 후 옵션에 따라 퍼징 대상 프로그램의 함수를 호출하는 과정이 가능하며 마지막 퍼징 대상 함수에 기 생성된 무작위 값을 입력하여 퍼징을 수행한다.
도 8은 전체시스템의 동작 순서도이다.
도 8에 도시된 바와 같이, 퍼징 시스템이 구동되면, File Manager는 idl 파일을 참조하여 UUID, 인터페이스 버전에 해당되는 version, Op number의 정도를 파싱하여 획득한다. 이 중에서 UUID는 사상되는 named pipe 정보를 얻기 위해 사용되는데, 이때 기 정의된 Named pipe 데이터 셋을 참조한다. 이후, 퍼징 시 주입되는 난수를 Random 데이터 셋에서 획득한다.
그 다음은 퍼징 대상의 접근을 위해 RPC Packet Creator에서 RPC 패킷을 구성하고, 상기 획득한 UUID, 인터페이스 버전, Op number, named pipe 정보와 난수 값을 Packet Injector 모듈로 보내어 완성된 패킷을 주입하게 된다.
이상에서 몇 가지 실시예를 들어 본 발명을 더욱 상세하게 설명하였으나, 본 발명은 반드시 이러한 실시예로 국한되는 것이 아니고 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형실시될 수 있다.
상술한 바와 같이, 본 발명에 의한 DCE RPC 객체의 퍼징 시스템 및 방법은, DCE RPC 소프트웨어 및 프로토콜을 퍼징 시 필요한 데이터를 idl 파일에 존재하는 uuid, interface version, op number 및 named pipe 정보를 자동으로 얻어와 퍼징 시 퍼징 대상에 대한 지식없이 퍼징이 가능하므로 사용자에게 편의성을 더해주고 비용 및 시간을 대폭 감소할 수 있다.

Claims (17)

  1. 퍼징(fuzzing) 대상 객체에 대한 idl 파일 및 Named Pipe 파일을 포함하는 정보가 존재하는 파일을 파싱(parsing) 및 분석하여, 상기 idl 파일을 참조하여 UUID(Universal Unique IDentifier), 인터페이스 버전, Op number를 포함하는 필요 정보를 획득하는 파일 매니저(File Manager);
    시스템 클럭을 인자로 난수 값을 생성하는 랜덤 데이터 제너레이터(Random Data Generator);
    RPC(Remote Procedure Call) 통신시 사용되는 프로토콜을 함수별로 구현함과 아울러 RPC 통신을 하기 위한 RPC 패킷을 생성하는 RPC 패킷 크리에이터(RPC Packet Creator); 및
    상기 생성된 RPC 패킷에 상기 필요 정보 및 난수 값을 주입하여 상기 퍼징 대상 객체에 전송하는 패킷 인젝터(Packet Injector)
    를 포함하는 것을 특징으로 하는 DCE(Distributed Computing Environment) RPC(Remote Procedure Call) 객체의 퍼징 시스템.
  2. 제 1 항에 있어서, 상기 파일 매니저는,
    idl 파일과 Named Pipe 파일을 포함하는 정보가 존재하는 파일을 파싱하는 IDL 파서(Interface Definition Language Parser) 및 NMP 파서(Network Management Protocol Parser); 및
    idl 파일과 Named pipe 파일을 분석하여 상기 필요 정보를 획득하는 IDL 분 석기(Interface Definition Language Analyzer) 및 NMP 분석기(Network Management Protocol Analyzer)
    로 이루어진 것을 특징으로 하는 DCE RPC 객체의 퍼징 시스템.
  3. 삭제
  4. 제 1 항에 있어서, 상기 UUID와 named pipe는 사상(mapping)된 데이터 셋(dataset)인 것을 특징으로 하는 DCE RPC 객체의 퍼징 시스템.
  5. 제 1 항에 있어서, 상기 랜덤 데이터 제너레이터는,
    사용자 지정의 입력을 처리하는 사용자 지정 제너레이터(User Defined generator)
    를 더 포함하는 것을 특징으로 하는 DCE RPC 객체의 퍼징 시스템.
  6. 제 1 항에 있어서, 상기 RPC 패킷 크리에이터는,
    RPC 통신시 사용되는 SMB 프로토콜, RPC 프로토콜을 함수별로 구현한 상태에 서 RPC 프로토콜을 분석하는 RPC 프로토콜 분석기(RPC Protocol Analyzer); 및
    RPC 통신을 하기 위한 패킷을 재조합하는 RPC 프로토콜 크리에이터(RPC Protocol Creator)
    로 이루어진 것을 특징으로 하는 DCE RPC 객체의 퍼징 시스템.
  7. 제 1 항에 있어서, 상기 패킷 인젝터는,
    소켓(Socket) 생성, 바인드(bind), 리슨(listen), 억셉트(accept)를 포함한 TCP 통신을 수행하는 TCP 래퍼(TCP Wrapper); 및
    퍼징 시 사용하는 데이터 구조를 정의하고 처리하는 함수를 구현한 리스너(Listener)
    로 이루어진 것을 특징으로 하는 DCE RPC 객체의 퍼징 시스템.
  8. (a) 파일 매니저에서 퍼징(fuzzing) 대상 객체에 대한 idl 파일 및 Named Pipe 파일을 포함하는 정보가 존재하는 파일에서 상기 idl 파일에서 UUID(Universal Unique IDentifier), 인터페이스 버전, Op number를 포함하는 필요 정보를 획득함과 아울러, 랜덤 데이터 제너레이터(Random Data Generator)에서 난수 값을 생성하는 단계;
    (b) RPC(Remote Procedure Call) 통신을 위해 RPC 패킷 크리에이터(RPC Packet Creator)에서 생성한 RPC 패킷에 패킷 인젝터(Packet Injector)가 상기 필요 정보 및 난수 값을 주입하여 상기 퍼징 대상 객체에 전송하는 단계
    를 포함하는 것을 특징으로 하는 DCE(Distributed Computing Environment) RPC(Remote Procedure Call) 객체의 퍼징 방법.
  9. 삭제
  10. 제 8 항에 있어서, 상기 Named Pipe 파일은 상기 퍼징 대상 객체가 사용하는 UUID와 사상(mapping)되는 named pipe에 대한 정보를 입력한 데이터 셋으로부터 선택되는 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
  11. 제 8 항에 있어서, 상기 인터페이스 버전은 idl 속성 정의부에 정의되어 있는 version의 문자열을 파싱하여 획득하는 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
  12. 제 8 항에 있어서, 상기 Op number는 "[in" 키워드의 존재에 따라 함수의 개수를 정하는 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
  13. 제 8 항에 있어서, 상기 UUID는 idl 속성 정의부에 정의되어 있는 UUID의 문자열을 파싱하여 획득하는 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
  14. 제 8 항에 있어서, 상기 퍼징 대상 객체의 idl 파일인 testing.idl 파일이 없을 경우에는 임의의 UUID를 주입하는 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
  15. 제 8 항에 있어서, 상기 난수 값은 이미 알려진 공격 문자열로 이루어진 미리 정의된 데이터 셋 또는 임의의 난수를 생성하는 함수를 이용하여 임의로 생성하는 데이터 셋에서 선택되는 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
  16. 제 8 항 또는 제 15 항에 있어서, 상기 난수 값을 생성하는 과정은,
    시스템의 클럭 값을 인자로 하여 난수 값을 생성하는 단계;
    상기 시스템에서 기존의 취약한 문자열이나 다양한 난수 값을 저장하기 위해 버퍼를 초기화하는 단계; 및
    상기 버퍼에 저장된 난수 값에서 무작위로 하나 이상을 선택하는 단계
    로 이루어진 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
  17. 제 8 항에 있어서, 상기 (b) 단계는,
    상기 퍼징 대상 객체와 SMB 프로토콜 협상을 수행하는 단계;
    SMB 및 RPC 바인드(bind) 패킷을 생성하고 해당 패킷을 버퍼에 저장하는 단계;
    상기 버퍼에 저장된 패킷을 상기 퍼징 대상 객체에 전송하는 단계; 및
    상기 퍼징 대상 객체에서 퍼징을 수행하고 응답하는 단계
    로 이루어진 것을 특징으로 하는 DCE RPC 객체의 퍼징 방법.
KR1020070038384A 2007-04-19 2007-04-19 Dce rpc 객체의 퍼징 시스템 및 방법 KR100879123B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070038384A KR100879123B1 (ko) 2007-04-19 2007-04-19 Dce rpc 객체의 퍼징 시스템 및 방법
US11/963,927 US7975273B2 (en) 2007-04-19 2007-12-24 Fuzzing system and method of distributed computing environment (DCE) remote procedure call (RPC)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070038384A KR100879123B1 (ko) 2007-04-19 2007-04-19 Dce rpc 객체의 퍼징 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20080094230A KR20080094230A (ko) 2008-10-23
KR100879123B1 true KR100879123B1 (ko) 2009-01-19

Family

ID=39873530

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070038384A KR100879123B1 (ko) 2007-04-19 2007-04-19 Dce rpc 객체의 퍼징 시스템 및 방법

Country Status (2)

Country Link
US (1) US7975273B2 (ko)
KR (1) KR100879123B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190102427A (ko) 2018-02-26 2019-09-04 주식회사 베스티언 Can 기기의 보안/품질을 검증하기 위한 퍼징 시스템 및 그 퍼징 방법
KR20240037803A (ko) 2022-09-15 2024-03-22 고려대학교 산학협력단 퍼징을 수행하기 위한 방법 및 장치

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101603202B1 (ko) * 2009-09-21 2016-03-14 삼성전자주식회사 이기종 멀티프로세서 시스템 온 칩에서의 rpc 데이터 배치 방법 및 장치
US8904484B2 (en) 2011-08-04 2014-12-02 Wyse Technology L.L.C. System and method for client-server communication facilitating utilization of authentication and network-based procedure call
US8997235B2 (en) 2012-02-07 2015-03-31 Microsoft Technology Licensing, Llc Adaptive fuzzing system for web services
CN103577758B (zh) * 2012-07-31 2017-05-31 西门子公司 程序的代码审核方法和装置
CN111309375B (zh) * 2020-02-11 2023-07-04 北京字节跳动网络技术有限公司 生成远程过程调用工具包的方法、装置、介质和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105525A (ja) 1996-10-02 1998-04-24 Hitachi Ltd 並列プロセッサ競合動作試験方法
KR19980056922A (ko) * 1996-12-30 1998-09-25 김영환 전송 매체용 시험신호 발생장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782392B1 (en) * 1998-05-26 2004-08-24 Rockwell Collins, Inc. System software architecture for a passenger entertainment system, method and article of manufacture
US7831969B2 (en) * 2002-08-13 2010-11-09 Brother Kogyo Kabushiki Kaisha Driver installing system for network devices
KR20040040628A (ko) 2002-11-07 2004-05-13 백남균 보안 시스템의 보안성 분석 장치 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105525A (ja) 1996-10-02 1998-04-24 Hitachi Ltd 並列プロセッサ競合動作試験方法
KR19980056922A (ko) * 1996-12-30 1998-09-25 김영환 전송 매체용 시험신호 발생장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190102427A (ko) 2018-02-26 2019-09-04 주식회사 베스티언 Can 기기의 보안/품질을 검증하기 위한 퍼징 시스템 및 그 퍼징 방법
KR20240037803A (ko) 2022-09-15 2024-03-22 고려대학교 산학협력단 퍼징을 수행하기 위한 방법 및 장치

Also Published As

Publication number Publication date
US7975273B2 (en) 2011-07-05
KR20080094230A (ko) 2008-10-23
US20080263572A1 (en) 2008-10-23

Similar Documents

Publication Publication Date Title
KR100879123B1 (ko) Dce rpc 객체의 퍼징 시스템 및 방법
CN108650149B (zh) 服务器的测试方法、装置、设备及计算机可读存储介质
US11487772B2 (en) Multi-party data joint query method, device, server and storage medium
US9740991B2 (en) Calculating in-flight metrics for non-interruptible business transactions
Hsu et al. A model-based approach to security flaw detection of network protocol implementations
CN112887388B (zh) 基于沙箱环境的数据处理系统
Wang et al. Rpfuzzer: A framework for discovering router protocols vulnerabilities based on fuzzing
CN112154420A (zh) 自动智能云服务测试工具
US11204860B2 (en) Methods and apparatuses for generating smart contract test case
CN110795174A (zh) 一种应用程序接口调用方法、装置、设备及可读存储介质
CN111159019B (zh) 一种应用程序的测试方法、测试控制终端以及测试终端
CN111431935B (zh) 一种识别网站登录口令数据传输安全性的方法
Biyani et al. Extension of SPIKE for encrypted protocol fuzzing
Liu et al. Extracting sent message formats from executables using backward slicing
Pan et al. Model-based grey-box fuzzing of network protocols
CN106919844A (zh) 一种Android系统应用程序漏洞检测方法
Wang et al. A model-based behavioral fuzzing approach for network service
CN110059485A (zh) Ios应用的私有api检测方法、终端及存储介质
Cámara et al. Composition and Run-time Adaptation of Mismatching Behavioural Interfaces.
CN114780398A (zh) 面向Cisco IOS-XE的Web命令注入漏洞检测方法
CA3154249A1 (en) Method for automatic derivation of attack paths in a network
Ma et al. Sulleyex: A fuzzer for stateful network protocol
Bush et al. Complexity-based information assurance
CN112699381B (zh) 一种基于Socket协议的漏洞检测装置和漏洞检测方法
CN107066538B (zh) 一种数据统计的方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141224

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151224

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee