KR102186127B1 - 해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램 - Google Patents

해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램 Download PDF

Info

Publication number
KR102186127B1
KR102186127B1 KR1020200055685A KR20200055685A KR102186127B1 KR 102186127 B1 KR102186127 B1 KR 102186127B1 KR 1020200055685 A KR1020200055685 A KR 1020200055685A KR 20200055685 A KR20200055685 A KR 20200055685A KR 102186127 B1 KR102186127 B1 KR 102186127B1
Authority
KR
South Korea
Prior art keywords
attack
container
training
docker
hacking
Prior art date
Application number
KR1020200055685A
Other languages
English (en)
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 KR1020200055685A priority Critical patent/KR102186127B1/ko
Application granted granted Critical
Publication of KR102186127B1 publication Critical patent/KR102186127B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/20Education
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Tourism & Hospitality (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Biophysics (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 해킹 방지용 모의 훈련 방법에 관한 것으로서, 더욱 상세하게는 소프트웨어의 서비스를 시작하기에 앞서 해킹에 대한 대비가 잘 되어있는지 확인하고, 보다 보안을 강화시킬 수 있는 방안을 마련함과 동시에, 해킹과 관련한 공격자와 방어자를 양성하되, 추후 서비스의 보안 확인에 소요되는 자원을 최소화시키기 위한 해킹 방지용 모의 훈련 방법을 제공한다.

Description

해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램 {HACKING SIMULATION TRAINING METHOD AND RECORDING MEDIUM STORING PROGRAM FOR EXECUTING THE SAME, AND COMPUTER PROGRAM STORED IN RECORDING MEDIUM FOR EXECUTING THE SAME}
본 발명은 해킹 방지용 모의 훈련 방법에 관한 것으로서, 더욱 상세하게는 소프트웨어의 서비스를 시작하기에 앞서 해킹에 대한 대비가 잘 되어있는지 확인하고, 보다 보안을 강화시킬 수 있는 방안을 마련함과 동시에, 해킹과 관련한 공격자와 방어자를 양성하되, 추후 서비스의 보안 확인에 소요되는 자원을 최소화시키기 위한 해킹 방지용 모의 훈련 방법에 관한 것이다.
정보기술이 발달하고 인터넷을 이용하는 서비스 제공이 늘어나면서 이를 이용하기 위한 개인 정보 제공 또한 자연스럽게 급증하고 있다. 온라인 상거래 사이트는 물론이고 대부분의 인터넷 사이트들이 서비스의 이용을 위해 이름, 생년월일, 주민등록번호, 주소 등 개인 정보의 제공을 요구한다. 그리고 그 결과로 '네이버'나 '다음' 같은 포털 사이트나 온라인 상거래업체는 엄청난 양의 개인 정보를 축적하고 있다. 문제는 이런 개인 정보들이 본인의 의사와는 상관없이 유출되어 상업적으로 활용되고 범죄에 이용될 가능성이 높아지고 있다는 것이다. 이런 사이버 범죄 행위의 대표 유형이 바로 해킹(hacking)이다.
해킹은 전산망에 불법적으로 침입해 개인 정보 또는 전산망 내의 각종 정보들을 탈취하거나 변조하는 전산망 보안 침해 사고다. 인터넷 발전의 초창기에는 해킹 행위를 하는 해커(hacker)가 마냥 부정적인 존재는 아니었다. 오히려 시스템을 시험하고 암호 생성자로 하여금 수준 높은 프로그램을 개발하도록 했고, 그들의 기술력과 상상력으로 인터넷의 발전을 이끌기도 했다. 하지만 최근에는 선량한 의미의 화이트 해커(white hacker)보다 악의적 의도를 가지고 다른 사람이나 회사의 컴퓨터에 침투해 정보를 훔치거나 망가뜨리는 블랙 해커(black hacker)가 '해커'를 의미하는 경우가 많아지고 있다.
2000년대 초반의 해킹 사고는 바이러스나 웜(네트워크에서 연속으로 복사 기능을 수행함으로써 자가 증식해 기억장치를 소모하거나 저장된 데이터를 파괴하는 프로그램)과 같이 개인의 PC에 악성코드(사용자 시스템에 침투해 정보를 유출하거나 정상적인 동작을 지연 또는 방해하는 프로그램)를 감염시켜 발생하는 사고가 주를 이루었다. 그러나 현재는 공격 기법이 점점 고도화되어 특정 기업이나 조직의 네트워크에 지속적으로 가하는 공격을 의미하는 APT 공격(Advanced Persistent Threat), 여러 대의 공격자를 분산 배치해 특정 사이트를 공격하는 디도스(DDoS, Distributed Denial of Service) 공격 그리고 개인 정보 유출로 인한 사고가 점차 증가하고 있다.
해킹으로 인한 피해는 개인 차원에만 그치는 것이 아니라 범국가적 위기를 초래하기도 한다. 실제로 2007년 발틱해의 소국인 에스토니아에 3주간 계속된 디도스 공격은 국가에 대한 사이버테러의 첫 번째 사례로 정부, 정당, 언론사, 은행, 기업 등의 웹사이트가 마비되었다. 3주간 지속된 공격에 국가 기간망이 1주일 이상 마비되었으며, 금융거래와 행정 업무가 불통 상태가 되었다. 국내에서도 2013년 3월 초유의 디도스 공격으로 주요 방송사들(KBS, MBC, YTN)과 금융기관(신한은행, 농협)의 전산망이 마비되어 국가적 혼란을 겪었다. 이렇게 해킹은 개인의 인권을 침해하는 동시에 심각한 사회적 혼란을 일으킬 수 있는 심각한 위험으로 선제적 대응이 요구되고 있다.
해커는 해킹을 위해 자신만의 고유한 방법들을 갖고 있지만, 일반적으로 보안 패치가 안된 웹서버의 취약점을 이용하거나 보안성을 고려하지 않고 개발된 웹애플리케이션의 취약점을 이용하는 방법 등이 많이 쓰인다. 예로 들면 파일 업로드 메뉴에서 해킹 프로그램을 업로드해 관리자 권한을 획득한 다음, 홈페이지를 바꾸거나 시스템에 침투해 데이터베이스 고객 정보를 빼내거나 다른 시스템 공격을 위한 경유지로 사용하는 것 등이다.
재능 있는 한 개인의 범죄수준에 머물렀던 해킹이 90년대 이후, 중국의 훙커처럼 국가차원에서 조직화 되고 있는 추세다. 세계 각국이 국가안보차원에서 해킹과 바이러스 프로그램을 전담하는 기관을 설립하기 시작했기 때문이다.
가장 빠른 움직임을 보인 나라는 미국이었다. 최근 럼스펠드 국방장관은 '사이버 전쟁에 대한 대비를 군의 임무 중 최우선 과제 중 하나로 생각한다'고 공언하기도 했는데, 사실 미국의 사이버 부대는 1996년 7월로 거슬러 올라간다. 미 국방부 국가안보국(NSA)과 FBI를 중심으로 정예 해커를 뽑아 사이버 부대를 구성한 것이다.
이들 해커들이 개발 중인 것은 목마 형식의 공격용 무기, 평소에는 적국 컴퓨터에 심어놓았다가 적절한 시기에 터뜨릴 수 있는 논리 폭탄, 스스로를 자기 복제해서 네트워크를 마비시킬 수 있는 웜(Worm), 네트워크 내에 유통되는 데이터를 도청하거나 가로챌 수 있는 스니퍼(Sniffer) 등이 포함되어 있다. 이를 이용하면 전쟁이 일어났을 때 적국 영토 내에서 석유나 천연 가스를 수송하는 파이프를 작동 불가능하게 할 수 있고, 전화선을 끊을 수도 있다.
현재 이러한 해커공격의 방어를 위해 일본이 지난 2000년 말 바이러스와 해킹기술을 독자적으로 개발하기 위한 사이버 부대를 창설한 것을 비롯해 러시아, 영국, 프랑스, 이스라엘 북한, 리비아, 쿠바 등 20여 개가 넘는 나라들이 사이버전을 대비한 부대를 운영 중인 것으로 알려져 있다.
하지만 우리나라는 민간차원에서 논의가 있을 뿐, 국가차원에서의 조직적인 움직임은 없다. 해커들은 활용하지 않고 방치하면 '폭탄'이나 바이러스로 초고속 전산망을 마비시키는 '초대받지 않은 손님' 임에 틀림없지만 잘만 활용하면 미사일이나 폭격기 못지않게 중요한 자산이다. 이제 사이버 전쟁은 공상과학 소설이나 미국 국방성의 시나리오 속에만 존재하는 것은 아니기 때문이다.
이러한 해킹을 방지하기 위해서는 많은 인적 물적 자원이 필요한 문제가 있으며, 아무리 보안을 강화한다 하더라도 해킹을 당할 가능성이 있다는 문제가 있다.
한국등록특허 [10-1427144]에서는 해킹방지 방화벽 시스템의 해킹방지 방법이 개시되어 있다.
한국등록특허 [10-1427144](등록일자: 2014년07월31일)
따라서, 본 발명은 상기한 바와 같은 문제점을 해결하기 위하여 안출된 것으로, 본 발명의 목적은 소프트웨어의 서비스를 시작하기에 앞서 해킹에 대한 대비가 잘 되어있는지 확인하고, 보다 보안을 강화시킬 수 있는 방안을 마련함과 동시에, 해킹에 대한 공격자와 방어자를 양성하되, 추후 서비스의 보안 확인에 소요되는 자원을 최소화시키기 위한 해킹 방지용 모의 훈련 방법을 공하는 것이다.
본 발명의 실 시예들의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기한 바와 같은 목적을 달성하기 위한 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법은 컴퓨터를 포함하는 연산처리수단에 의하여 실행되는 프로그램 형태로 이루어지는 해킹 방지용 모의 훈련 방법에 있어서, 운영자 단말(10)이 공개된 원격 저장소에 도커(Docker) 설정 파일을 배치하여 컨테이너(Container)를 생성하고, 상기 컨테이너에 훈련용 소프트웨어를 배치하는 훈련준비 단계(S10); 공격자 단말(20)이 상기 훈련준비 단계(S10)에서 저장된 훈련용 소프트웨어의 공격 성공에 사용된 공격 코드를 운영자 단말(10) 및 방어자 단말(30)에게 공개된 원격 저장소에 저장하는 공격 단계(S20); 운영자 단말(10)이 상기 훈련준비 단계(S10)에서 저장된 훈련용 소프트웨어를 상기 공격 단계(S20)에서 저장된 공격 코드로 공격하여 공격이 성공하는지 확인하는 공격검증 단계(S30); 방어자 단말(30)이 상기 공격검증 단계(S30)에서 검증된 상기 공격 단계(S20)에서 저장된 공격 코드 분석 결과를 바탕으로 훈련용 소프트웨어에서 공격 코드에 의해 공격된 취약점의 코드를 변경하여, 훈련용 소프트웨어를 갱신하는 방어 단계(S40); 상기 공격 단계(S20)의 분석 결과를 바탕으로 공격 패턴을 기계학습 하고, 상기 방어 단계(S40)의 분석 결과를 바탕으로 방어 패턴을 기계학습 하는 기계학습 단계(S50); 및 상기 기계학습 단계(S50)에서 학습된 공격 패턴과 방어 패턴에 따른 상관관계를 근거로 방어 대응 솔루션을 제공하는 대응솔루션제공 단계(S60);를 포함하되, 상기 훈련용 소프트웨어는 운영자 단말(10) 또는 방어자 단말(30)에 의해서만 갱신되는 것을 특징으로 한다.
또한, 상기 훈련준비 단계(S10)는 운영자 단말(10)이 비공개된 원격 저장소에 도커 설정 파일을 배치하여 컨테이너를 생성하고, 상기 컨테이너에 훈련용 소프트웨어를 배치하는 비공개준비 단계(S11); 운영자 단말(10)이 컨테이너를 실행하기 위해 플래그 값을 랜덤하게 생성한 후, 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입하는 제1플래그삽입 단계(S12); 운영자 단말(10)이 도커상의 컨테이너에서 훈련용 소프트웨어를 실행하여, 컨테이너에 삽입한 플래그 값이 출력되는지 확인하는 것으로 훈련용 소프트웨어가 제대로 동작하는 것을 판단하는 실행확인 단계(S13); 및 운영자 단말(10)이 비공개된 원격 저장소를 공개된 원격 저장소로 변경하거나, 비공개된 원격 저장소를 공개된 원격 저장소로 복사하는 훈련공개 단계(S14);를 포함하는 것을 특징으로 한다.
또, 상기 공격 단계(S20)는 공격자 단말(20)이 상기 공개된 원격 저장소를 복제하는 공격준비 단계(S21); 공격자 단말(20)이 컨테이너를 실행하기 위해 플래그 값을 랜덤하게 생성한 후, 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입하는 제2플래그삽입 단계(S22); 공격자 단말(20)이 컨테이너에서 훈련용 소프트웨어를 공격하기 위하여 공격 코드를 생성한 후, 생성한 공격 코드로 훈련용 소프트웨어의 공격을 시도하는 공격시도 단계(S23); 공격자 단말(20)이 컨테이너에 삽입한 플래그 값이 출력되는지 확인하는 것으로, 공격 코드가 훈련용 소프트웨어의 공격에 성공한 것을 판단하는 공격확인 단계(S24); 및 상기 공격확인 단계(S24)에서 플래그 값이 출력되었다면, 공격자 단말(20)은 공격 코드가 성공적으로 훈련용 소프트웨어를 공격한 것으로 판단하고, 상기 훈련용 소프트웨어의 공격 성공에 사용된 공격 코드를 운영자 단말(10) 및 방어자 단말(30)에게 공개된 원격 저장소에 저장하는 공격코드저장 단계(S25);를 포함하는 것을 특징으로 한다.
또한, 상기 방어 단계(S40)는 시간 또는 공격 성공 횟수를 포함하는 적어도 하나의 미리 설정된 조건을 만족하는 경우 실행되는 것을 특징으로 한다.
또, 상기 기계학습 단계(S50)는 기계학습에 필요한 도커 이미지를 생성하고, 도커 이미지에 기초하여 가상화된 클라우드 컴퓨팅 환경을 생성하여 기계학습을 수행하는 것을 특징으로 한다.
또한, 상기 기계학습 단계(S50)는 도커는 DSL(Domain Specific Language)로 서비스 요청에 대응되는 도커 파일(Docker file)을 생성하는 것을 특징으로 한다.
또, 상기 기계학습 단계(S50)는 상기 가상화된 클라우드 컴퓨팅 환경을 상기 서비스 요청에 대응되는 복수의 컨테이너로 분할하는 것을 특징으로 한다.
또한, 상기 기계학습 단계(S50)는 상기 운영자 단말(10)이 상기 가상화된 클라우드 컴퓨팅 환경을 통해 딥러닝 어플레이케이션을 배포하는 것을 특징으로 한다.
또, 본 발명의 일 실시예에 따르면, 상기 해킹 방지용 모의 훈련 방법을 구현하기 위한 프로그램이 저장된 컴퓨터 판독 가능한 기록매체가 제공되는 것을 특징으로 한다.
아울러, 본 발명의 일 실시예에 따르면, 상기 해킹 방지용 모의 훈련 방법을 구현하기 위해, 컴퓨터 판독 가능한 기록매체에 저장된 프로그램이 제공되는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법에 의하면, 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법은 소프트웨어의 서비스를 시작하기에 앞서 해킹에 대한 대비가 잘 되어있는지 확인하기 위해, 모의 훈련을 하고, 이를 통해 보완점을 찾아 보완하기 위한 것으로, 다수의 공격자에게 공격을 시도하게 하고, 다수의 방어자에게 방어를 시도하게 하여, 보다 보안을 강화시킬 수 있는 방안을 마련할 수 있는 효과가 있다.
또한, 해킹과 관련한 공격과 방어의 기회를 제공하여 해킹과 관련한 공격자와 방어자를 양성할 수 있는 효과가 있다.
기계학습을 통해 축적된 데이터를 근거로, 추후 서비스의 보안 강화에 필요로 하는 자원을 최소화시킬 수 있는 효과가 있다.
도 1 내지 도 6은 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 흐름도.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 공정, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 공정, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미가 있는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명을 더욱 상세하게 설명한다. 이에 앞서, 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정하여 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여, 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 또한, 사용되는 기술 용어 및 과학 용어에 있어서 다른 정의가 없다면, 이 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 통상적으로 이해하고 있는 의미를 가지며, 하기의 설명 및 첨부 도면에서 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 설명은 생략한다. 다음에 소개되는 도면들은 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 예로서 제공되는 것이다. 따라서, 본 발명은 이하 제시되는 도면들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 또한, 명세서 전반에 걸쳐서 동일한 참조번호들은 동일한 구성요소들을 나타낸다. 도면들 중 동일한 구성요소들은 가능한 한 어느 곳에서든지 동일한 부호들로 나타내고 있음에 유의해야 한다.
도 1 내지 도 6은 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 흐름도이다.
설명에 앞서, 본 명세서( 및 특허청구범위)에서 사용되는 용어에 대해 간단히 설명하도록 한다.
'도커(docker)'는 컨테이너(container) 기반의 오픈소스 가상화 플랫폼으로, 컨테이너를 관리하며 컨테이너 안에 소프트웨어와 같은 응용 프로그램들을 배치시키는 일을 수행한다.
컨테이너라 함은 해킹 방지용 모의 훈련에 참석한 참여자들이 자신들의 단말에서 원본 소프트웨어 또는 취약 소프트웨어가 실행되도록 하는 가상의 운영시스템를 의미한다.
해킹 방지용 모의 훈련 참여자는 컨테이너 환경을 생성하기 위해 도커 파일을 원격 저장소에 같이 배치하여, 도커가 구동되도록 한다.
기본적인 용어를 정리하였으나, 설명에 필요한 모든 용어를 정리한 것은 아니며, 상기에 정의된 용어 이외에 새로이 등장되는 용어들은 추후 설명하도록 한다.
도 1 내지 도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법은 컴퓨터를 포함하는 연산처리수단에 의하여 실행되는 프로그램 형태로 이루어지는 해킹 방지용 모의 훈련 방법에 있어서, 훈련준비 단계(S10), 공격 단계(S20), 공격검증 단계(S30), 방어 단계(S40), 기계학습 단계(S50) 및 대응솔루션제공 단계(S60)를 포함하되, 훈련용 소프트웨어는 운영자 단말(10) 또는 방어자 단말(30)에 의해서만 갱신되는 것을 특징으로 한다.
상기 훈련준비 단계(S10), 공격 단계(S20), 공격검증 단계(S30), 방어 단계(S40), 기계학습 단계(S50) 및 대응솔루션제공 단계(S60)는 진행 상황에 대한 모니터링이 가능하다.
훈련준비 단계(S10)는 운영자 단말(10)이 공개된 원격 저장소에 도커(Docker) 설정 파일을 배치하여 컨테이너(Container)를 생성하고, 상기 컨테이너에 훈련용 소프트웨어를 배치한다.
상기 훈련용 소프트웨어는 서비스를 시작하기에 앞서 해킹에 대한 대비가 잘 되어있는지 확인하기 위한 것으로, 모의 훈련을 통해 보안을 강화시킬 목적으로 해킹 방지용 모의 훈련에 제공하는 소프트웨어이다.
도커 파일을 공개된 원격 저장소에 배치함으로써 가상의 OS인 컨테이너에서 소프트웨어가 실행되는 것은, 분산 버전 관리 시스템인 깃(Git)에서 이미 알려진 사항으로, 이에 대한 자세한 설명은 생략한다.
상기 훈련용 소프트웨어는 해킹 방지용 모의 훈련 참가자들이 해킹 대회에서 임의의 참가자들이 해킹 또는 해킹을 방어할 오픈소스 소프트웨어 또는 직접 만든 소프트웨어를 의미한다. 상기 훈련용 소프트웨어에는 참가자들이 의도하지 않은 취약점이 포함되어 있을 수도 있고 없을 수도 있다.
하나의 컨테이너 내에는 하나의 훈련용 소프트웨어, 그리고 하나의 훈련용 소프트웨어로부터 생성된 적어도 하나의 취약 소프트웨어가 각각 브랜치에 포함되어 배치되는 것도 가능하다.
상기 브랜치에는 취약 소프트웨어와 커밋(commit)이 포함되어 있다. 커밋(commit)은 훈련용 소프트웨어의 어느 위치에 취약 코드가 삽입되어 변화가 있는지, 어떤 취약 코드가 삽입되었는지 등을 나타내는 정보가 포함되어 있다.
취약 소프트웨어는, 해킹 방지용 모의 훈련 참가자들이 원본 소프트웨어에 직접 만든 취약 코드를 삽입한 소프트웨어로, 일종의 공격 참가자들을 시험하기 위한 문제라 할 수 있고, 다른 참가자(공격자)들은 취약 소프트웨어를 자신이 만드는 공격 코드를 이용하여 해킹을 시도할 수 있다.
각각의 브랜치에 포함된 훈련용 소프트웨어와 복수의 취약 소프트웨어는 해킹 대회 문제로서 참여자들에게 제공될 수 있도록 원격 저장소에 업로드 될 수 있다.
상기 원격 저장소는 운영자 단말(10)의 설정에 따라 공개된 원격 저장소와 비공개된 원격 저장소를 제공할 수 있다.
즉, 운영자 단말(10)에 의해 원격 저장소의 일부 또는 전부를 비공개된 원격 저장소로 설정하면, 비공개된 원격 저장소에 소프트웨어를 배치하는 참석자(방어자(방어자 단말(30)))들과 해킹 방지용 모의 훈련 운영자(운영자 단말(10))만이 접근하여 저장된 정보(브랜치, 커밋, 암호화된 공격 코드 등)를 확인하는 것이 가능하도록 할 수 있다.
본 발명의 실시예에서는 원격 저장소가 GitHub 저장소인 것을 예로 하여 설명한다.
그리고, 운영자 단말(10)에 의해 원격 저장소의 일부 또는 전부를 공개된 원격 저장소로 설정하면, 공개된 원격 저장소는 해킹 방지용 모의 훈련에 참여한 참석자들(공격자, 방어자, 운영자)이 모두 저장된 정보(브랜치, 커밋, 암호화된 공격 코드 등)를 확인할 수 있도록 한다.
컨테이너의 실행은 원격 저장소에 저장된 있는 훈련용 소프트웨어와 훈련용 소프트웨어에서 생성된 적어도 하나의 컨테이너를 복제한다. 그리고 어느 하나의 컨테이너를 실행하기 앞서, 플래그 값을 가지는 파일을 컨테이너에 삽입한다.
공격 단계(S20)는 공격자 단말(20)이 상기 훈련준비 단계(S10)에서 저장된 훈련용 소프트웨어의 공격 성공에 사용된 공격 코드를 운영자 단말(10) 및 방어자 단말(30)에게 공개된 원격 저장소에 저장한다.
공격자 단말(20)을 사용하는 해킹 방지용 모의 훈련 참가자는 컨테이너 환경을 생성하기 위해 도커 파일을 새로운 원격 저장소에 동일하게 배치하여, 도커가 구동되도록 한다.
이때, 상기 공격 단계(S20)는 상기 훈련준비 단계(S10)에서 공개된 원격 저장소를 복사하여 사용하는 것이 바람직하다.
상기 공격 단계(S20)의 공격자 단말(20)은 미리 만들어진 도커 컨테이너 일 수 있으며, 이때 자동화된 공격을 진행이 가능하고, 관리서버로 부터 공격방식 및 횟수 등에 대한 정보를 받아 정형화된 공격을 진행가능하게 하여, 원격지서버에 훈련프로그램이 아닌, 모의해킹을 받으려고 하는 서버의 유사 도커 컨테이너 서버에 대해 진행함으로 해당 서버에 대한 취약점에 대한 정형화된 취약점 진단을 진행할 수 있다. 이때 전제 조건은 원격지서버에 실제 서비스 서버에 대해 최대한 유사 혹은 동일 컨테이너를 생성할 수 있어야 한다.
다른 방법으로는 자동화된 공격자 도커 컨테이너를 통해 실제 서비스 서버에 대해 진행하여, 해당 서버에 대해 해킹훈련을 진행할 수 있다.
또 다른 방법으로는 자동화된 공격자 도커 컨테이너를 통해 방어자를 위한 훈련을 따로 진행할 수 있다.
즉, 자동화된 공격자 도커 컨테이너를 사용할 수 있다.
이때, 사용자는 공개된 개인 원격지 저장소에 개발소스가 빌드된 동작 가능한 프로그램 도커 컨테이너 이미지를 업로드하고, 해킹훈련 관리서버는 사용자의 요청받아 해당 프로그램 도커 이미지에 대한 자동화된 공격자 도커 컨테이너를 통해 해킹 훈련을 진행함으로서 프로그램 상용화전 침해위협에 대한 테스트를 진행할 수 있다.
또한 기계학습기반 대응솔루션을 제공하여, 침해위협에 대한 개선 테스트 진행이 가능하다.
또, 카테고리 분류, 각 카테고리 별 컨테이너 수 조정, 신규 공격 컨테이너 생성, 기존 공격 컨테이너 업데이트 등을 통해 공격자 도커 컨테이너 이미지에 대해 관리하는 것도 가능하다.
즉, 해킹훈련 관리서버의 도커 컨테이너화를 통해 다수의 관리서버 컨테이너를 생성하여, 동시에 여러 파트의 훈련 진행이 가능하도록 할 수 있다.
공격검증 단계(S30)는 운영자 단말(10)이 상기 훈련준비 단계(S10)에서 저장된 훈련용 소프트웨어를 상기 공격 단계(S20)에서 저장된 공격 코드로 공격하여 공격이 성공하는지 확인한다.
상기 공격검증 단계(S30)는 운영자 단말(10)은 방어자 단말(30)이 공개된 원격 저장소에 업로드된 훈련용 소프트웨어를 공격자 단말(20)이 저장한 공격 코드로 실행하여, 공격 코드가 훈련용 소프트웨어의 공격에 성공하는지 확인한다.
즉, 컨테이너를 실행함으로써, 컨테이너에 포함되어 있는 브랜치의 훈련용 소프트웨어를 공격 코드를 이용하여 공격하여, 공격 성공 여부를 확인한다.
만약, 취약 소프트웨어가 브랜치에 포함되어 배치된 경우, 공격 코드는 취약 소프트웨어에 삽입된 취약 코드의 위치와 형태 정보를 가지는 커밋을 분석한 해킹 대회 참여자가 취약 코드를 공격하기 위해 생성한 코드이거나, 운영자 또는 방어자가 의도하지 않은 취약점을 발견한 원본 소프트웨어를 공격하기 위해 생성한 코드이다.
방어 단계(S40)는 방어자 단말(30)이 상기 공격검증 단계(S30)에서 검증된 상기 공격 단계(S20)에서 저장된 공격 코드 분석 결과를 바탕으로 훈련용 소프트웨어에서 공격 코드에 의해 공격된 취약점의 코드를 변경하여, 훈련용 소프트웨어를 갱신한다.
상기 방어 단계(S40)에서 방어자는 방어자 단말(200)을 이용하여, 공격이 성공한 공격 코드 분석 결과를 토대로 훈련용 소프트웨어에서 공격 코드에 의해 공격된 취약점의 코드를 변경하고 코드가 변경된 훈련용 소프트웨어를 운영자 단말(10) 및 공격자 단말(30)에게 공개된 원격 저장소에 저장한다.
새롭게 저장(갱신)된 코드가 변경된 훈련용 소프트웨어를 공격자 단말(20)들이 복제하여 새로운 공격 코드로 해킹한다.
상기 공격 단계(S20)와 상기 방어 단계(S40)가 반복 수행되면서, 수많은 공방이 이루어지게 되는 구조이다.
즉, 최초의 훈련용 소프트웨어는 하나가 되지만, 해킹으로부터 보호하기 위하여 최초의 훈련용 소프트웨어를 보완(갱신)한 훈련용 소프트웨어 다수가 생성되며, 이렇게 생성된 각각의 훈련용 소프트웨는 공격자에게는 또 다시 해킹해야 하는 문제로 제공되어, 수많은 공방이 이루어지게 되는 구조이다.
예를 들어, 최초의 훈련용 소프트웨어가 TEST 라 하고, 공격자가 1, 2, 3, 방어자가 a, b, c라 하며, TEST를 1 공격자가 공격에 성공한 공격 파일을 TEST_1이라 하고, TEST_1을 방어하기 위해 a 방어자가 갱신한 훈련용 소프트웨어를 TEST_1_a라 할 때,
초기에는 TEST를 공격에 성공한 TEST_1, TEST_2, TEST_3이 생성될 수 있고,
그 후, TEST_1_a, TEST_1_b, TEST_1_c, TEST_2_a, TEST_2_b, TEST_2_c, TEST_3_a, TEST_3_b, TEST_3_c, 가 생성되는 등
시간이 지날수록 훈련용 소프트웨어의 수가 많아지게 되는 구조이다.
이 중, 공격 성공률이 높은 공격자가 우수한 공격자로 판단될 수 있으며, 방어 성공률이 높은 방어자가 우수한 방어자로 판단될 수 있고, 공격에 성공한 공격 파일의 수가 적은 훈련용 소프트웨어가 보안에 우수한 것으로 판단될 수 있다.
기계학습 단계(S50)는 상기 공격 단계(S20)의 분석 결과를 바탕으로 공격 패턴을 기계학습 시키고, 상기 방어 단계(S40)의 분석 결과를 바탕으로 방어 패턴을 기계학습 시킨다.
이때, 상기 기계학습 단계(S50)는 공격 패턴과 방어 패턴 간의 상관관계를 기계학습 시키는 것이 바람직하다.
공격 패턴은 해킹에 사용되는 기술(취약점 검사(vulnerability scanner), 비밀번호 크래킹(password cracking), 루트킷(rootkit), 키 로거(Key loggers), 스푸핑 공격(spoofing attack), 패킷 스니퍼(packet sniffer) 등) 시도와 이러한 시도의 성공 여부를 바탕으로 학습시킬 수 있다.
상기 기계학습 단계(S50)는 컨테이너 내부의 훈련용 소프트웨어와 상호작용하는 로그 모듈을 통해 기계학습 시 사용되는 로그를 수집 및 관리할 수 있다.
로그는 현재 서비스의 다양한 상태를 확인할 수 있다.
도커의 경우, 컨테이너의 표준 입력(STDIN), 표준 출력(STDOUT), 표준 오류(STDERR) 로그를 별도의 메타데이터 파일로 저장하며 이를 확인할 수 있도록 할 수 있다.
대응솔루션제공 단계(S60)는 상기 기계학습 단계(S50)에서 학습된 공격 패턴과 방어 패턴에 따른 상관관계를 근거로 방어 대응 솔루션을 제공한다.
상기 대응솔루션제공 단계(S60)는 방어 대응 솔루션을 운영자 단말(10) 또는 방어자 단말(30)에 제공하는 것이 바람직하다.
상기 대응솔루션제공 단계(S60)는 기계학습으로 도출된 대응솔루션에 대한 데이터베이스화 및 빅데이터 기반 검색 및 통계에 대한 자료를 제공할 수 있다.
상기 대응솔루션제공 단계(S60)는 기존 다른 해킹훈련을 통해 누적된 대응솔루션 데이터베이스를 통한 빠른 대응방법을 제공하는 것도 가능하다.
상기 대응솔루션제공 단계(S60)는 대응 솔루션에 대한 검증이 가능하다.
(어떻게 검증을 할 것인지에 대한 구체적인 언급이 있으면 좋습니다.
추가 하시고자 하는 검증방법에 대한 내용 추가 부탁드립니다.)
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 훈련준비 단계(S10)는 비공개준비 단계(S11), 제1플래그삽입 단계(S12), 실행확인 단계(S13) 및 훈련공개 단계(S14)를 포함할 수 있다.
비공개준비 단계(S11)는 운영자 단말(10)이 비공개된 원격 저장소에 도커 설정 파일을 배치하여 컨테이너를 생성하고, 상기 컨테이너에 훈련용 소프트웨어를 배치한다.
상기 비공개준비 단계(S11)에서 운영자는 운영자 단말(10)을 이용하여 훈련용 소프트웨어를 도커 파일과 함께 비공개된 원격 저장소에 저장한다.
훈련용 소프트웨어와 도커 파일이 비공개된 원격 저장소에 배치되기 때문에, 방어자와 운영자 만이 비공개된 원격 저장소를 확인할 수 있다.
제1플래그삽입 단계(S12)는 운영자 단말(10)이 컨테이너를 실행하기 위해 플래그 값을 랜덤하게 생성한 후, 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입한다.
상기 제1플래그삽입 단계(S12)에서 운영자는 훈련용 소프트웨어가 도커상의 컨테이너에서 실행되는지 확인한다.
이를 위해, 운영자는 운영자 단말(10)을 이용하여 플래그 값을 랜덤하게 생성한 후, 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입할 수 있다.
실행확인 단계(S13)는 운영자 단말(10)이 도커상의 컨테이너에서 훈련용 소프트웨어를 실행하여, 컨테이너에 삽입한 플래그 값이 출력되는지 확인하는 것으로 훈련용 소프트웨어가 제대로 동작하는 것을 판단한다.
상기 제1플래그삽입 단계(S12)에서 상기 운영자 단말(10)을 이용하여 운영자는 컨테이너에서 훈련용 소프트웨어를 실행하여, 훈련용 소프트웨어가 제대로 동작하는지 확인할 수 있다.
훈련용 소프트웨어의 정상 동작 여부는 상기 제1플래그삽입 단계(S12)에서 컨테이너에 삽입한 플래그 값이 출력되는지 확인함으로써, 정상 동작 여부를 확인할 수 있다.
즉, 훈련용 소프트웨어가 정상적으로 동작할 경우, 컨테이너에 삽입된 플래그 파일의 플래그 값이 출력되며, 이를 확인하여 해킹 방지용 모의 훈련 운영자는 훈련용 소프트웨어가 컨테이너에서 정상적으로 동작하는지 확인할 수 있다.
훈련공개 단계(S14)는 운영자 단말(10)이 비공개된 원격 저장소를 공개된 원격 저장소로 변경하거나, 비공개된 원격 저장소를 공개된 원격 저장소로 복사한다.
상기 비공개준비 단계(S11), 제1플래그삽입 단계(S12) 및 실행확인 단계(S13)를 거쳐 해킹 방지용 모의 훈련 준비 단계가 완료되면, 운영자는 해킹 방지용 모의 훈련에서 공격 참여자들이 공격할 훈련용 소프트웨어를 훈련공개 단계(S14)를 통해 공개할 수 있다.
도 4에 도시된 바와 같이, 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 공격 단계(S20)는 공격준비 단계(S21), 제2플래그삽입 단계(S22), 공격시도 단계(S23), 공격확인 단계(S24) 및 공격코드저장 단계(S25)를 포함할 수 있다.
공격준비 단계(S21)는 공격자 단말(20)이 상기 공개된 원격 저장소를 복제한다.
상기 공격준비 단계(S21)에서 공격자는 공개된 원격 저장소를 상기 공격자 단말(20) 또는 임의의 저장소에 복사한 후, 복사된 훈련용 소프트웨어를 확인한다.
이는, 다수의 공격자가 공개된 원격 저장소에 저장된 훈련용 소프트웨어를 공격하게 되면, 원본이 손상되어 다수의 공격자 간에 형평성이 맞지 않을 수 있기 때문에, 다수의 공격자 간에 형평성을 확보하기 위함이다.
즉, 동일한 조건에서 다양한 공격(해킹)을 받아보고, 추후 이러한 공격을 어떻게 방어할 것인지 대비를 하기 위한 기초자료로 활용하기 위함이다.
제2플래그삽입 단계(S22)는 공격자 단말(20)이 컨테이너를 실행하기 위해 플래그 값을 랜덤하게 생성한 후, 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입한다.
상기 제2플래그삽입 단계(S22)에서 공격자는 공격자 단말(20)을 이용하여 플래그 값을 랜덤하게 생성할 수 있다. 그리고 생성한 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입한다. 플래그 파일은 추후 공격 성공 여부를 확인하는 자료로 활용된다.
공격시도 단계(S23)는 공격자 단말(20)이 컨테이너에서 훈련용 소프트웨어를 공격하기 위하여 공격 코드를 생성한 후, 생성한 공격 코드로 훈련용 소프트웨어의 공격을 시도한다.
상기 공격시도 단계(S23)에서 공격자 단말(20)은 컨테이너에서 훈련용 소프트웨어를 공격 코드로 공격을 시도하고, 공격 코드가 훈련용 소프트웨어를 공격하는지 확인한다.
공격확인 단계(S24)는 공격자 단말(20)이 컨테이너에 삽입한 플래그 값이 출력되는지 확인하는 것으로, 공격 코드가 훈련용 소프트웨어의 공격에 성공한 것을 판단한다.
공격자 단말(20)이 생성한 공격 코드가 훈련용 소프트웨어의 공격에 성공하여 훈련용 소프트웨어가 해킹될 경우, 상기 제2플래그삽입 단계(S22)에서 삽입된 플래그 값이 출력되는지 확인되면, 공격자 단말(20)은 공격 코드가 성공적으로 훈련용 소프트웨어를 공격한 것으로 판단한다.
공격코드저장 단계(S25)는 상기 공격확인 단계(S24)에서 플래그 값이 출력되었다면, 공격자 단말(20)은 공격 코드가 성공적으로 훈련용 소프트웨어를 공격한 것으로 판단하고, 상기 훈련용 소프트웨어의 공격 성공에 사용된 공격 코드를 운영자 단말(10) 및 방어자 단말(30)에게 공개된 원격 저장소에 저장한다.
이때, 공격 성공에 사용된 공격 코드를 암호화하여 운영자 단말(10) 및 방어자 단말(30)에게 공개된 원격 저장소에 저장하여, 운영자 및 방어자가 공격 코드를 확인할 수 있도록 저장하는 것이 바람직하다.
이는 다른 공격자가 공격에 성공한 공격 코드를 카피하거나 모방하는 것을 방지하기 위함이다.
본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 방어 단계(S40)는 시간 또는 공격 성공 횟수를 포함하는 적어도 하나의 미리 설정된 조건을 만족하는 경우 실행되는 것을 특징으로 할 수 있다.
즉, 상기 방어 단계(S40)는 상기 훈련준비 단계(S10) 이후에, 일정 조건을 만족해야 진행되는 것을 특징으로 할 수 있다.
이는, 상기 공격 단계(S20)를 다수의 공격자가 수행한 이후에 상기 방어 단계(S40)가 수행되도록 함으로써, 최초 훈련용 소프트웨어를 공격(해킹) 할 수 있는 다양한 루트를 확인하기 위한 것이다.
다양한 공격 루트를 확인하는 것도 중요하지만 공격 시간을 무한정 제공하는 것은 비효율적이기 때문에, 일정 조건을 만족해야 방어 단계(S40)가 진행되도록 하는 것이 바람직하다.
본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 기계학습 단계(S50)는 기계학습에 필요한 도커 이미지를 생성하고, 도커 이미지에 기초하여 가상화된 클라우드 컴퓨팅 환경을 생성하여 기계학습을 수행하는 것을 특징으로 할 수 있다.
상기 기계학습 단계(S50)는 객체와 가상화된 클라우드 컴퓨팅 환경을 바인딩(binding)할 수 있으며, 가상화된 클라우드 컴퓨팅 환경을 통해 딥러닝 어플레이케이션을 배포할 수 있다.
이를 위해, 플랫폼 서버, 도커 및 딥러닝 서버로 상기 기계학습 단계(S50)를 수행할 수 있다.
플랫폼 서버는 객체로부터 딥러닝과 관련된 서비스 요청을 수신할 수 있다.
플랫폼 서버는 도커에 요청된 서비스에 관한 정보를 출력할 수 있다.
플랫폼 서버는 객체(운영자단말(10), 공격자 단말(20), 방어자 단말(30))로부터 새로운 서비스 요청을 수신하는 경우, 이에 적합한 도커에 새로운 요청과 관련된 정보를 출력할 수 있다.
도커는 서비스 요청에 응답하여 도커(Docker) 이미지를 생성할 수 있다.
도커 이미지는 컨테이너를 실행하기 위한 정보를 포함할 수 있다.
딥러닝 서버는 도커 이미지에 기초하여 가상화된 클라우드 컴퓨팅 환경을 생성할 수 있다.
딥러닝 서버는 가상화된 클라우드 컴퓨팅 환경을 서비스 요청에 대응되는 복수의 컨테이너로 분할할 수 있다.
각 컨테이너들은 객체(운영자단말(10), 공격자 단말(20), 방어자 단말(30))가 요청한 서비스에 적합한 독립적인 컴퓨터 환경을 제공할 수 있다.
본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 기계학습 단계(S50)는 도커는 DSL(Domain Specific Language)로 서비스 요청에 대응되는 도커 파일(Docker file)을 생성하는 것을 특징으로 할 수 있다.
도커는 DSL(Domain Specific Language)로 서비스 요청에 대응되는 도커 파일(Docker file)을 생성할 수 있다.
도커(230)는 객체로부터 요청된 서비스에 응답하여 딥러닝 서버에 도커 이미지를 출력할 수 있다.
본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 기계학습 단계(S50)는 상기 가상화된 클라우드 컴퓨팅 환경을 상기 서비스 요청에 대응되는 복수의 컨테이너로 분할하는 것을 특징으로 할 수 있다.
플랫폼 서버는 객체에게 개인 계정 공간을 제공할 수 있다.
객체는 플랫폼 서버의 개인 계정 공간을 이용하여 딥러닝 어플리케이션을 개발하고, 이를 배포할 수 있다.
또한, 플랫폼 서버 다양한 개발 언어 및 개발 환경을 제공할 수 있다. 객체는 플랫폼 서버가 제공하는 프로그래밍 언어를 이용하여 코드를 작성하여 PaaS 환경에서 자신만의 어플리케이션을 생성할 수 있다.
프로그래밍 언어는 베이직, C, C#, C++, D, F#, 파이썬, 루비, 자바, 파스칼, 프롤로그, 포트란, 코볼, 리스프, 펄, R, 그루비, 스칼라, occam, Swift 및 HTML 등을 포함할 수 있다.
객체는 플랫폼 서버가 제공하는 개발 언어 및 환경을 통해 인터넷에 접속할 수 있는 최소한의 장치만을 이용하여 어플리케이션을 수정하고 배포할 수 있다.
플랫폼 서버는 어플리케이션을 배포, 운영할 수 있다. 플랫폼 서버는 폭 넓은 런타임을 제공하고 프레임워크 및 서비스를 선택할 수 있는 자유를 제공할 수 있다.
플랫폼 서버는 특정 클라우드 환경에 종속되지 않고, 자유로운 선택과 다양성을 보장할 수 있다. 또한, 플랫폼 서버는 새롭게 추가되는 기술 및 서비스에 대해 확장될 수 있다. 플랫폼 서버는 퍼블릭 클라우드 또는 프라이빗 클라우드를 구축하는데 이용될 수 있다.
플랫폼 서버는 객체가 작성한 코드를 여러 환경에 쉽게 이식할 수 있다.
플랫폼 서버는 객체의 서비스 요청에 따라 이에 적합한 딥러닝 서버를 바인딩할 수 있다. 플랫폼 서버는 컨테이너를 관리하고 컨테이너와 통신할 수 있다. 플랫폼 서버는 생성된 컨테이너들의 네트워크를 설정할 수 있다.
플랫폼 서버는 객체의 서비스를 요청에 응답하여 서비스에 적합한 개발 환경을 제공할 수 있는 컨테이너들을 객체와 바인딩할 수 있다. 컨테이너가 제공하는 개발 환경은 GPU(Graphics Processing Unit) 서비스, 스토리지(storage) 서비스를 포함할 수 있다.
플랫폼 서버는 객체가 요청한 서비스를 제공할 수 있는 딥러닝 서버를 검색해서 컨테이너(또는 인스턴스(instance))를 생성할 수 있다. 플랫폼 서버는 객체와 컨테이너를 바인딩하여 객체가 요청한 서비스를 제공할 수 있다. 바인딩이 완료되면 플랫폼 서버를 거치지 않고 객체가 컨테이너와 직접 통신할 수 있다.
플랫폼 서버는 클라우드 컨트롤러를 포함할 수 있다. 클라우드 컨트롤러는 서비스를 제공하는 딥러닝 서버에 포함된 보쉬(bosh)가 가지는 고유한 URL(Uniform Resource Locator)을 통해 서비스 브로커(service broker)에 접근할 수 있다.
플랫폼 서버는 서비스 브로커를 생성할 수 있다. 플랫폼 서버는 서비스 플랜을 정의하여 서비스에 저장하고 플랜에 맞게 서비스 인스턴스를 생성하도록 딥러닝 서버를 제어할 수 있다. 플랫폼 서버는 사용할 서비스를 정의하고, 바인딩 여부를 결정할 수 있다. 플랫폼 서버는 정의한 서비스를 JSON(JavaScript Object Notation) 형태로 변환할 수 있다. 플랫폼 서버는 파이썬 플라스크의 루트 방법(method)를 사용하여 카탈로그 정보를 URL 형식으로 등록할 수 있다.
플랫폼 서버는 객체의 서비스 요청에 응답하여 서비스 브로커API(Application Programming Interface)를 제어할 수 있다.
본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 기계학습 단계(S50)는 상기 운영자 단말(10)이 상기 가상화된 클라우드 컴퓨팅 환경을 통해 딥러닝 어플레이케이션을 배포하는 것을 특징으로 할 수 있다.
딥러닝 서버는 서드 파티 시스템으로 동작할 수 있다. 딥러닝 서버는 GPU 서버 환경을 확장 및 수정 할 수 있다.
딥러닝 서버는 플랫폼 서버(210)를 통해서 복수의 객체(100)에게 개별적인 딥러닝 개발 공간을 제공할 수 있다.
예를 들어, 딥러닝 서버는 YOLO(You Only Look Once) 개발 환경 및 CNN(Convolution Neural Network) 개발 환경을 제공할 수 있다.
딥러닝 서버는 도커(230)의 제어에 따라 컨테이너(container)를 생성 및 삭제할 수 있다.
도 5에 도시된 바와 같이, 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 기계학습 단계(S50)는 로그수집 단계(S51), 우선순위정보생성 단계(S52) 및 컨테이너생성 단계(S53)를 포함하며, 후술하는 수행동작 우선순위 정보를 생성하는 것은, 수집되는 복수의 에러 로그를 각각의 컨테이너별로 분류하여 컨테이너별 비정상 작동률을 산출하고, 상기 컨테이너별 비정상 작동률을 서로 비교하여 재생성될 컨테이너의 순서인 수행동작 우선순위를 결정하는 것을 특징으로 할 수 있다.
각각의 단말(10, 20, 30)은 리눅스 컨테이너(LinuX Container) 기술에 따라 독립된 환경에서 애플리케이션(응용프로그램)을 실행시킬 수 있다.
이를 위해, 각각의 단말(10, 20, 30)은 도커 기반의 컨테이너를 적어도 하나 생성할 수 있다.
로그수집 단계(S51)는 컴퓨터 클러스터를 구성하는 각각의 호스트로부터 상기 호스트에 생성되어 동작하는 도커 기반 컨테이너에 대한 정상 로그 또는 에러 로그를 포함하는 로그정보를 수집한다.
컨테이너에는 애플리케이션과 이를 구동하는데 필요한 모든 종속물, 라이브러리, 기타 바이너리와 구성 파일 등을 하나의 패키지로 묶은 리눅스 모듈(이하, 모듈)이 배치될 수 있다. 이에 따라, 각각의 호스트는 생성된 컨테이너별로 독립적으로 애플리케이션을 실행시킬 수 있다.
이 과정에서, 각각의 호스트는 각각의 컨테이너들에 대한 로그정보를 수집할 수 있다.
예를 들어, 제1 호스트는 제1 컨테이너 및 제2 컨테이너에 대한 로그정보를 수집하고, 제2 호스트는 자체적으로 생성된 제3 컨테이너 및 제4 컨테이너에 대한 로그정보를 수집 할 수 있다.
로그정보는 컨테이너에 격리된 리눅스 모듈의 상태 정보 및 동작정보를 나타내는 정보일 수 있다.
관리서버는 각각의 호스트를 클러스터링하여 관리할 수 있다.
즉, 관리서버는 각각의 호스트를 하나처럼 사용하는 클러스터링 기법을 이용하여 작업을 처리할 수 있다.
관리서버는 입력받은 트래픽을 로드밸런싱 기법에 따라 자동으로 분산하여 각각의 호스트에 할당할 수 있다.
관리서버는 클러스터 내의 호스트들로부터 로그정보를 수집할 수 있다.
관리서버는 수집된 로그 정보를 이용하여 호스트에 작업을 할당하는 순서를 결정하기 위한 스케줄링을 수행할 수 있으며, 특정 호스트에 대한 컨테이너의 오류 시 이에 대한 대처 방안을 제공할 수 있다.
호스트는 관리서버의 요청에 의해 컨테이너를 생성할 수 있다.
호스트는 도커 기반의 컨테이너를 생성하고, 컨테이너에 대한 로그정보를 수집하여 관리서버로 전송할 수 있다.
이때, 호스트에 생성된 컨테이너는 일반 컨테이너와 로그 컨테이너 중 어느 하나이며, 호스트는 복수의 일반 컨테이너와 하나의 로그 컨테이너를 생성하여 관리할 수 있다.
일반 컨테이너는 애플리케이션의 동작 상태에 관한 로그정보를 생성하며, 원격 시스템 로그(syslog)를 통해 로그정보를 호스트에 전송할 수 있다. 구체적으로, 일반 컨테이너는 원격 syslog를 통하여 애플리케이션 실행 결과를 표준 스트림의 표준 출력(stdout) 또는 표준 오류(stderr)를 통해 전송할 수 있다.
여기서, 표준 출력은 애플리케이션이 정상적으로 작동되면서 생성되는 로그정보들이 전송되는 출력 통로이고, 표준 오류는 애플리케이션의 실행 중 오류가 발생되었을 때 생성되는 로그정보들이 전송되는 출력 통로일 수 있다.
로그 컨테이너는 호스트에 존재하는 복수의 일반 컨테이너에 의해 생성된 로그정보가 저장된 데이터베이스 또는 저장된 경로에 마운트하여 저장된 로그정보들을 수집할 수 있다.
로그 컨테이너는 정상 로그 또는 에러 로그로 구분할 수 있다. 정상 로그는 표준 출력을 전송되는 로그정보로, 상술한 바와 같이 컨테이너가 정상적으로 실행되면서 생성되는 정보들일 수 있다.
반면, 에러 로그는 표준 오류를 통해 전송된 로그정보로, 컨테이너가 잘못된 요청이나 자체 결함 등으로 이상 동작을 일으키거나 작동이 중지된 경우 발생되는 정보들일 수 있다.
로그 컨테이너는 로그정보가 어떠한 경로로 전송되었는지를 확인하여 로그정보를 정상 로그 또는 에러 로그로 구분할 수 있다.
로그 컨테이너는 구분된 로그정보를 관리서버로 전송할 수 있다.
우선순위정보생성 단계(S52)는 상기 정상 로그로 구분된 로그정보를 이용하여 작업을 할당하기 위한 호스트를 결정하는 스케줄링 정보를 생성하고, 상기 에러 로그로 구분된 로그정보를 이용하여 호스트에 할당할 작업인 수행동작의 순서를 결정하는 수행동작 우선순위 정보를 생성한다.
상기 우선순위정보생성 단계(S52)는 로그정보를 분석하여 관리서버가 호스트 및 컨테이너 관리를 위한 다양한 분석정보를 생성할 수 있다. 여기서, 분석정보는 컨테이너별 수행시간 및 점유율에 대한 정보와, 비정상 작동률에 대한 정보와, 수행동작 우선순위에 대한 정보를 포함한다.
관리서버는 클러스터를 구성하는 호스트들로부터 로그정보를 수집할 수 있다.
호스트에는 일반 컨테이너와 로그 컨테이너를 포함하는 복수 개의 컨테이너들이 생성되어 있으며, 호스트는 각각의 일반 컨테이너들로부터 수집된 로그정보를 정상 로그와 비정상 로그로 구분하여 관리서버에 전송할 수 있다.
이때, 호스트는 에러 로그는 관리서버로 즉시 전송하되, 정상 로그는 보관되었다가 일정 시간이 지날 때 마다 정기적으로 전송할 수 있다.
관리서버는 수집된 로그정보를 이용하여 분석 정보를 생성할 수 있다.
구체적으로, 관리서버는 정상 로그를 이용하여 컨테이너별 수행시간 및 점유율에 대한 정보를 생성하고, 이를 기초로 스케줄링 정보를 생성할 수 있다. 그리고, 관리서버는 에러 로그를 이용하여 비정상 작동률에 대한 정보를 생성하고, 비정상 작동률에 따라 수행동작 우선순위 정보를 생성할 수 있다.
수집된 로그정보들 중 정상 로그로 분류된 로그정보를 이용하여 컨테이너별 수행시간 및 점유율에 대한 정보를 생성할 수 있다.
이때, 도커 기반의 컨테이너는 이미지 형태로 생성되므로, 컨테이너 이미지별 수행시간 및 점유율에 대한 정보를 생성할 수 있다.
즉, 컨테이너가 정상적으로 작동되는 로그정보를 분석하여 클러스터를 구성하는 각각의 호스트가 어떠한 애플리케이션을 얼마동안 실행 중인지를 판단할 수 있으며, 해당 애플리케이션의 실행 시 호스트에서 차지하는 점유율 및 클러스터 전체의 점유율에 대한 정보를 확인할 수 있다.
관리서버는 특정 작업을 수행하기 위한 리소스가 많이 필요한 것으로 판단되는 경우, 동일한 애플리케이션에 대한 컨테이너를 클러스터 내의 복수의 호스트에 생성하도록 제어할 수 있다.
또한, 수집된 로그정보들 중 에러 로그로 분류된 로그정보를 이용하여 비정상 작동률에 대한 정보를 생성할 수 있다.
구체적으로, 수집되는 에러 로그를 각각의 컨테이너별로 분류하여 컨테이너 이미지별, 다시 말해 애플리케이션별 비정상 작동률에 대한 정보를 산출할 수 있다.
비정상 작동률에 대한 정보는 컨테이너가 잘못된 요청이나 자체 결함 등으로 이상동작을 하거나 중지할 확률에 대한 정보일 수 있다.
에러 로그가 수신되면 해당 에러 로그가 어떤 컨테이너에 대한 에러인지를 확인하고, 기 저장된 에러 로그들 중 해당 컨테이너에 대한 정상 로그 및 에러 로그를 참조하여 에러 로그가 발생된 컨테이너에 대한 에러 재발 확률인 비정상 작동률에 대한 정보를 산출할 수 있다.
비정상 작동률에 대한 정보를 이용하여 수행동작 우선순위에 대한 정보를 생성할 수 있다.
수행 동작 우선순위는 관리서버가 호스트에 작업을 할당하는 과정에 있어 어떠한 작업을 우선순위로 처리 할 것인지를 결정하는 과정에서 참조되는 정보일 수 있다.
예를 들어, 관리서버는 제1 컨테이너를 재생성 해야 되는 제1 작업과, 제2 컨테이너를 새롭게 생성해야 되는 제2 작업과, 제3 컨테이너를 재생성해야 되는 제3 작업을 처리해야되는 경우, 생성된 수행동작 우선순위에 대한 정보에 따라 먼저 처리할 작업을 결정할 수 있다.
이를 위해, 작업의 종류 및 비정상 작동률에 따라 수행동작 우선순위를 결정할 수 있다.
구체적으로, 컨테이너를 새롭게 생성하는 작업에 비해 재생생해야 되는 작업에 높은 가중치를 부여할 수 있다.
상술한 실시예에 따르면, 수행동작 우선순위에 대한 정보에서 제1 작업 및 제3 작업을 제2 작업보다 높은 순위에 배치시킬 수 있다.
또한, 제1 작업의 비정상 작동률과 제3 작업의 비정상 작동률을 비교하여 비정상 작동률이 높은 작업을 우선순위로 설정할 수 있다.
즉, 제1 작업의 에러 재발 확률이 제3 작업의 에러 재발 확률보다 높은 경우, 제1 작업을 제3 작업보다 먼저 처리하도록 결정할 수 있다.
최종적으로, 제1 작업-제3 작업-제2 작업 순으로 작업을 할당하는 수행동작 우선순위에 대한 정보를 생성할 수 있다.
또한, 컨테이너를 새롭게 생성하는 작업이 복수 개인 경우, 컨테이너의 중요도에 따라 우선순위를 설정할 수 있다.
이 과정에서, 에러 로그가 수신되면 수행동작 우선순위를 실시간으로 갱신할 수 있다.
상술한 바와 같이, 로그 컨테이너는 구분된 로그정보를 관리서버로 전송할 수 있다.
이때, 로그 컨테이너는 정상 로그로 구분된 로그정보들은 소정 시간동안 수집 후 주기적으로 관리서버에 전송할 수 있다.
반면, 로그 컨테이너는 에러 로그로 구분된 로그정보가 수신되면, 수신되는 즉시 관리서버로 전송할 수 있다.
에러 로그가 수신되면 해당 에러 로그에 대한 컨테이너의 비정상 작동률을 산출하여 기 생성된 수행동작 우선순위에 대한 정보와 비교할 수 있다. 예를 들어, 제4 컨테이너에 대한 에러 로그를 수신하면, 제4 컨테이너의 비정상 작동률을 산출한 뒤, 앞서 생성된 제1 내지 제3 작업간 처리 순서가 반영된 수행동작 우선순위에 대한 정보와 비교할 수 있다.
이때, 제4 컨테이너에 대한 재생성 작업인 제4 작업의 비정상 작동률이 제1 작업의 비정상 작동률보다 높은 경우, 제4 작업을 최우선순위로 처리하도록 수행동작 우선순위에 대한 정보를 갱신할 수 있다. 이와 같이, 에러 로그가 수신 될 때마다 수행동작 우선순위에 대한 정보를 실시간으로 갱신할 수 있다.
몇몇 다른 실시예에서, 비정상 작동률을 미리 정해진 임계값과 비교하는 과정을 추가적으로 수행한 후 수행동작 우선순위에 대한 정보를 생성할 수 있다.
구체적으로, 제1 작업의 비정상 작동률 및 제3 작업의 비정상 작동률을 미리 설정된 임계값과 비교할 수 있다.
이때, 제1 작업의 비정상 작동률이 임계값 이상인 것으로 확인되면, 이전 단계에서 결정된 수행동작 우선순위를 유지시킬 수 있다.
반면, 제3 작업의 비정상 작동률이 임계값 미만인 것으로 확인되면, 제3 작업의 순위를 제2 작업보다 후순위로 설정할 수 있다.
즉, 컨테이너를 재생성해야 되는 작업을 컨테이너를 새롭게 생성해야 되는 작업보다 선순위로 설정하되, 컨테이너를 재생성해야 되는 작업들에 대한 비정상 작동률을 임계값과 비교하여 그 결과에 따라 컨테이너를 재생성해야 되는 특정 작업을 컨테이너를 새롭게 생성해야 되는 작업보다 후순위로 설정할 수 있다.
몇몇 또 다른 실시예에서, 비정상 작동률을 다른 임계값과 비교한 결과에 따라 처리 작업 대상에서 제외시킬 수도 있다.
상술한 실시예에 따른 임계값을 제1 임계값으로 가정하면, 비정상 작동률을 제1 임계값과 비교하는 과정에서, 제1 임계값보다 작은 제2 임계값과 함께 비교할 수 있다.
상술한 실시예의 제3 작업에 대한 비정상 작동률이 제2 임계값 또한 미만인 것으로 확인되면, 수행동작 우선순위에 대한 정보에서 제3 작업을 제외시킬 수 있다.
즉, 일시적인 잘못된 요청으로 인해 컨테이너가 오동작할 경우는 비정상 작동률이 극소하기 때문에, 1회성 에러 로그가 발생한 경우 해당 컨테이너를 재생성 하지 않아도 정상적으로 작동할 가능성이 매우 크며, 이에 따라 컨테이너를 재생성하는 추가적인 리소스를 절약함으로써 전체 시스템의 성능을 향상시키는 효과를 기대할 수 있다.
이때, 로드밸런싱 기법을 이용하여 클러스터 내의 호스트들의 작업의 부하를 분산시키도록 컨테이너의 스케줄링을 담당할 수 있다.
기 생성된 수행시간 및 점유율에 대한 정보 및 수행동작 우선순위에 대한 정보를 이용하여 작업을 할당하기 위한 호스트를 결정하는 스케줄링 정보를 생성할 수 있다.
구체적으로, 수행동작 우선순위에 대한 정보를 참조하여 현재 처리할 작업의 종류(기존 컨테이너를 재생성할지 또는 새로운 컨테이너를 생성할지)를 결정하고, 수행시간 및 점유율에 대한 정보를 참조하여 클러스터 내의 어떤 호스트로 해당 작업을 할당할지를 결정하는 스케줄링 정보를 생성할 수 있다.
생성된 스케줄링 정보에 따라 특정 호스트로 컨테이너의 생성 또는 재생성을 명령하는 제어신호를 전송할 수 있다.
이와 같이, 도커 기반의 컨테이너의 상태나 동작정보를 담은 로그정보를 중앙 호스트의 개념인 관리서버에서 통합 관리할 수 있으며, 로그정보를 기반으로 하는 새로운 서비스를 용이하게 확장할 수 있다.
또한, 관리서버는 로그정보를 분석하여 로드밸런싱 기반의 스케줄링이나 컨테이너 모듈을 자가 개선할 수 있으며, 상술한 바와 같이 에러 로그로 분류된 로그 정보를 이용하여 컨테이너의 오류 및 고장을 감내하는 알고리즘을 적용하여 지능형 컨테이너 관리 서비스를 제공할 수 있다.
컨테이너생성 단계(S53)는 상기 스케줄링 정보 및 상기 우선순위 정보를 기초로 상기 수행동작 우선순위에 따른 작업을 수행할 어느 하나의 호스트를 결정하고, 상기 어느 하나의 호스트에서 상기 작업에 대한 컨테이너가 생성 또는 재생성되도록 상기 어느 하나의 호스트로 제어 신호를 전송한다.
도 6에 도시된 바와 같이, 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법의 로그수집 단계(S51)는 초기수집 단계(S511), 수집기전송 단계(S512) 및 분산저장 단계(S513)를 포함할 수 있다.
초기수집 단계(S511)는 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트(fluentd agent)에서, 상기 복수의 도커 컨테이너들 각각의 로그 데이터를 수집한다.
초기수집 단계(S511)에서 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트는 복수의 도커 컨테이너들 각각이 수행될 때 발생되는 로그 데이터를 수집한다.
예를 들어, 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트는 복수의 도커 컨테이너들 각각이 실행됨에 따라 로그 데이터가 생성되는 경우에만 로그 데이터를 수집할 수 있다.
다른 예를 들면, 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트는 복수의 도커 컨테이너들 각각이 실행됨에 따라 로그 데이터가 생성되는 경우와 무관하게, 미리 설정된 시간 간격에 따라 로그 데이터를 수집할 수도 있다.
이 때, 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트는 수집된 로그 데이터를 비정형(unstructured) 데이터 형식으로부터 정형(structured) 데이터 형식으로 변환하는 전처리를 수행할 수 있다.
수집기전송 단계(S512)는 상기 복수의 도커 컨테이너들 각각의 로그 데이터를 모니터링 도커 컨테이너에 탑재된 적어도 하나의 플루언티드 수집기(fluentd collector)로 전송한다.
전처리된 로그 데이터는 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트에 의해 모니터링 도커 컨테이너에 탑재된 적어도 하나의 플루언티드 수집기로 전송된다.
예를 들어, 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트는 전처리된 복수의 도커 컨테이너들 각각의 로그 데이터를 JSON(javascript object notation) 포맷으로 변환하여 모니터링 도커 컨테이너에 탑재된 적어도 하나의 플루언티드 수집기로 전송할 수 있다.
따라서, 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트가 모니터링 도커 컨테이너에 탑재된 적어도 하나의 플루언티드 수집기로 로그 데이터를 전송하는 과정에서의 네트워크 비용이 크게 감소될 수 있다.
또한, 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트는 모니터링 도커 컨테이너에 탑재된 적어도 하나의 플루언티드 수집기로 복수의 도커 컨테이너들 각각의 로그 데이터를 전송할 뿐만 아니라, 로그 데이터를 생성한 도커 컨테이너의 네임 또는 서비스 네임을 태그로 지정하여 함께 전송함으로써, 모니터링 도커 컨테이너에서 로그 데이터의 근원지를 파악하도록 할 수 있다.
또한, 복수의 도커 컨테이너들 각각에 탑재된 플루언티드 에이전트는 전처리된 로그 데이터를 모니터링 도커 컨테이너에 탑재된 적어도 하나의 플루언티드 수집기로 전송하는 과정에서, 복수의 도커 컨테이너들 각각의 파일 시스템(HDFS과 구별되는 파일 시스템으로, 복수의 도커 컨테이너들 각각에 포함되거나 연결된 파일 시스템)에 tailing 방식으로 저장할 수 있다.
플루언티드 수집기(fluentd collector)를 통하여 MapReduce, Mahout, Elasticsearch 및 Kibana 등의 모듈을 기반으로 로그 데이터 수집, 분석 및 저장 등의 동작을 수행할 수 있다.
분산저장 단계(S513)는 상기 모니터링 도커 컨테이너에서, 상기 모니터링 도커 컨테이너에 연결된 HDFS(hadoop distributed file system)의 복수의 노드들 각각에 포함되는 데이터 노드에 상기 복수의 도커 컨테이너들 각각의 로그 데이터를 분산 저장한다.
모니터링 도커 컨테이너는 적어도 하나의 플루언티드 수집기에서 수신되는 복수의 도커 컨테이너들 각각의 로그 데이터를 HDFS의 복수의 노드들 각각에 포함되는 데이터 노드에 분산 저장한다.
또한, 모니터링 도커 컨테이너는 복수의 도커 컨테이너들 각각의 로그 데이터를 분산 저장하는 과정에서, 복수의 도커 컨테이너들 각각의 로그 데이터가 분산 저장되는 시간을 기록할 수 있다.
따라서, 모니터링 도커 컨테이너는 HDFS의 복수의 노드들 각각에 포함되는 데이터 노드에 분산 저장되는 복수의 도커 컨테이너들 각각의 로그 데이터 및/또는 모니터링 도커 컨테이너가 분산 저장되는 시간에 기초하여, 복수의 도커 컨테이너들 각각에서 공격 또는 침입이 발생되었는지를 탐지할 수 있다.
특히, 복수의 노드들 각각에 포함되는 데이터 노드에는 복수의 도커 컨테이너들 각각의 로그 데이터 뿐만 아니라, 로그 데이터를 생성한 도커 컨테이너의 네임 또는 서비스 네임도 같이 저장되기 때문에, 공격 또는 침입이 발생되는 로그 데이터의 근원지가 파악될 수 있다.
또한, 모니터링 도커 컨테이너는 공격 또는 침입이 발생되었는지 여부를 탐지하는 과정에서, 복수의 노드들 각각에 포함되는 데이터 노드에 분산 저장된 복수의 도커 컨테이너들 각각의 로그 데이터뿐만 아니라, 복수의 도커 컨테이너들 각각의 파일 시스템에 저장된 복수의 도커 컨테이너들 각각의 로그 데이터를 추가적으로 활용할 수도 있다.
즉, 복수의 도커 컨테이너들 각각의 로그 데이터를 HDFS의 복수의 노드들 각각에 포함되는 데이터 노드에 분산 저장할 뿐만 아니라, 복수의 도커 컨테이너들 각각의 파일 시스템에 저장함으로써, 내고장성을 가질 수 있다.
또한, 적어도 하나의 플루언티드 수집기에서 수신되는 복수의 도커 컨테이너들 각각의 로그 데이터가 대용량인 경우, 모니터링 도커 컨테이너는 복수의 도커 컨테이너들 각각의 로그 데이터를 미리 설정된 정크 파일의 기본 단위로 분할한 뒤, 분할된 로그 데이터를 복수의 노드들 각각에 포함되는 데이터 노드에 분산 저장할 수 있다.
이때, 상기 분산저장 단계(S513)는 상기 모니터링 도커 컨테이너에서, 상기 모니터링 도커 컨테이너의 마스터 노드에 포함되는 네임 노드에 상기 분산 저장되는 복수의 도커 컨테이너들 각각의 로그 데이터에 대한 메타 데이터 정보를 기록하는 것을 특징으로 할 수 있다.
구체적으로, 모니터링 도커 컨테이너는 복수의 도커 컨테이너들 각각의 로그 데이터를 JobTracker 및 TaskTracker를 통하여 복수의 노드들 각각에 포함되는 데이터 노드에 분산 저장하고, 분산 저장되는로그 데이터에 대한 메타 데이터 정보를 모니터링 도커 컨테이너의 마스터 노드에 포함되는 네임 노드에 기록할 수 있다. 여기서, 모니터링 도커 컨테이너는 상술한 분산 저장 동작을 미리 설정된 시간 간격에 따라 수행할 수 있다.
이상에서 본 발명의 일 실시예에 따른 해킹 방지용 모의 훈련 방법에 대하여 설명하였지만, 해킹 방지용 모의 훈련 방법을 구현하기 위한 프로그램이 저장된 컴퓨터 판독 가능한 기록매체 및 해킹 방지용 모의 훈련 방법을 구현하기 위한 컴퓨터 판독 가능한 기록매체에 저장된 프로그램 역시 구현 가능함은 물론이다.
즉, 상술한 해킹 방지용 모의 훈련 방법은 이를 구현하기 위한 명령어들의 프로그램이 유형적으로 구현됨으로써, 컴퓨터를 통해 판독될 수 있는 기록매체에 포함되어 제공될 수도 있음을 당업자들이 쉽게 이해할 수 있을 것이다. 다시 말해, 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어, 컴퓨터 판독 가능한 기록매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 상기 컴퓨터 판독 가능한 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리, USB 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명은 상기한 실시예에 한정되지 아니하며, 적용범위가 다양함은 물론이고, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 다양한 변형 실시가 가능한 것은 물론이다.
10: 운영자 단말
20: 공격자 단말
30: 방어자 단말
S10: 훈련준비 단계
S11: 비공개준비 단계 S12: 제1플래그삽입 단계
S13: 실행확인 단계 S14 훈련공개 단계
S20: 공격 단계
S21: 공격준비 단계 S22: 제2플래그삽입 단계
S23: 공격시도 단계 S24: 공격확인 단계
S25: 및 공격코드저장 단계
S30: 공격검증 단계
S40: 방어 단계
S50: 기계학습 단계
S51: 로그수집 단계
S511: 초기수집 단계 S512: 수집기전송 단계
S513: 분산저장 단계
S52: 우선순위정보생성 단계 S53: 컨테이너생성 단계
S60: 대응솔루션제공 단계

Claims (10)

  1. 컴퓨터를 포함하는 연산처리수단에 의하여 실행되는 프로그램 형태로 이루어지는 해킹 방지용 모의 훈련 방법에 있어서,
    운영자 단말(10)이 공개된 원격 저장소에 도커(Docker) 설정 파일을 배치하여 컨테이너(Container)를 생성하고, 상기 컨테이너에 훈련용 소프트웨어를 배치하는 훈련준비 단계(S10);
    공격자 단말(20)이 상기 훈련준비 단계(S10)에서 저장된 훈련용 소프트웨어의 공격 성공에 사용된 공격 코드를 운영자 단말(10) 및 방어자 단말(30)에게 공개된 원격 저장소에 저장하는 공격 단계(S20);
    운영자 단말(10)이 상기 훈련준비 단계(S10)에서 저장된 훈련용 소프트웨어를 상기 공격 단계(S20)에서 저장된 공격 코드로 공격하여 공격이 성공하는지 확인하는 공격검증 단계(S30);
    방어자 단말(30)이 상기 공격검증 단계(S30)에서 검증된 상기 공격 단계(S20)에서 저장된 공격 코드 분석 결과를 바탕으로 훈련용 소프트웨어에서 공격 코드에 의해 공격된 취약점의 코드를 변경하여, 훈련용 소프트웨어를 갱신하는 방어 단계(S40);
    상기 공격 단계(S20)의 분석 결과를 바탕으로 공격 패턴을 기계학습 하고, 상기 방어 단계(S40)의 분석 결과를 바탕으로 방어 패턴을 기계학습 하는 기계학습 단계(S50); 및
    상기 기계학습 단계(S50)에서 학습된 공격 패턴과 방어 패턴에 따른 상관관계를 근거로 방어 대응 솔루션을 제공하는 대응솔루션제공 단계(S60);
    를 포함하되,
    상기 훈련용 소프트웨어는 운영자 단말(10) 또는 방어자 단말(30)에 의해서만 갱신되는 것을 특징으로 하며,
    상기 훈련준비 단계(S10)는
    운영자 단말(10)이 비공개된 원격 저장소에 도커 설정 파일을 배치하여 컨테이너를 생성하고, 상기 컨테이너에 훈련용 소프트웨어를 배치하는 비공개준비 단계(S11);
    운영자 단말(10)이 컨테이너를 실행하기 위해 플래그 값을 랜덤하게 생성한 후, 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입하는 제1플래그삽입 단계(S12);
    운영자 단말(10)이 도커상의 컨테이너에서 훈련용 소프트웨어를 실행하여, 컨테이너에 삽입한 플래그 값이 출력되는지 확인하는 것으로 훈련용 소프트웨어가 제대로 동작하는 것을 판단하는 실행확인 단계(S13); 및
    비공개된 원격 저장소를 공개된 원격 저장소로 복사하는 훈련공개 단계(S14);
    를 포함하고,
    상기 기계학습 단계(S50)는
    기계학습에 필요한 도커 이미지를 생성하고, 도커 이미지에 기초하여 가상화된 클라우드 컴퓨팅 환경을 생성하여 기계학습을 수행하는 것을 특징으로 하며,
    상기 공격 단계(S20)는
    공격자 단말(20)이 미리 만들어진 도커 컨테이너인 경우, 자동화된 공격을 진행하고, 관리서버로 부터 공격방식 및 횟수를 포함하는 정보를 받아 정형화된 공격을 진행하게 하여, 모의해킹을 받으려고 하는 서버의 유사 도커 컨테이너 서버에 대해 진행하여, 해당 서버에 대한 취약점에 대한 정형화된 취약점 진단을 진행하는 것을 특징으로 하고,
    사용자는 공개된 개인 원격지 저장소에 개발소스가 빌드된 동작 가능한 프로그램 도커 컨테이너 이미지를 업로드하고, 해킹훈련 관리서버는 사용자의 요청받아 해당 프로그램 도커 이미지에 대한 자동화된 공격자 도커 컨테이너를 통해 해킹 훈련을 진행함으로서 프로그램 상용화전 침해위협에 대한 테스트 진행이 가능한 것을 특징으로 하며,
    카테고리 분류, 각 카테고리 별 컨테이너 수 조정, 신규 공격 컨테이너 생성 및 기존 공격 컨테이너 업데이트 중 선택되는 적어도 어느 하나를 통해 공격자 도커 컨테이너 이미지에 대해 관리함으로써, 해킹훈련 관리서버의 도커 컨테이너화를 통해 다수의 관리서버 컨테이너를 생성하여, 동시에 여러 파트의 훈련을 진행하는 것을 특징으로 하고,
    상기 기계학습 단계(S50)는 컨테이너 내부의 훈련용 소프트웨어와 상호작용하는 로그 모듈을 통해 기계학습 시 사용되는 로그를 수집 및 관리하는 것을 특징으로 하며,
    도커의 경우, 컨테이너의 표준 입력(STDIN), 표준 출력(STDOUT) 및 표준 오류(STDERR) 로그를 별도의 메타데이터 파일로 저장 및 관리하는 것을 특징으로 하고,
    상기 대응솔루션제공 단계(S60)는 기계학습으로 도출된 대응솔루션에 대한 데이터베이스화 및 빅데이터 기반 검색 및 통계에 대한 자료를 제공하는 것을 특징으로 하는 해킹 방지용 모의 훈련 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 공격 단계(S20)는
    공격자 단말(20)이 상기 공개된 원격 저장소를 복제하는 공격준비 단계(S21);
    공격자 단말(20)이 컨테이너를 실행하기 위해 플래그 값을 랜덤하게 생성한 후, 플래그 값을 포함하는 플래그 파일을 컨테이너에 삽입하는 제2플래그삽입 단계(S22);
    공격자 단말(20)이 컨테이너에서 훈련용 소프트웨어를 공격하기 위하여 공격 코드를 생성한 후, 생성한 공격 코드로 훈련용 소프트웨어의 공격을 시도하는 공격시도 단계(S23);
    공격자 단말(20)이 컨테이너에 삽입한 플래그 값이 출력되는지 확인하는 것으로, 공격 코드가 훈련용 소프트웨어의 공격에 성공한 것을 판단하는 공격확인 단계(S24); 및
    상기 공격확인 단계(S24)에서 플래그 값이 출력되었다면, 공격자 단말(20)은 공격 코드가 성공적으로 훈련용 소프트웨어를 공격한 것으로 판단하고, 상기 훈련용 소프트웨어의 공격 성공에 사용된 공격 코드를 운영자 단말(10) 및 방어자 단말(30)에게 공개된 원격 저장소에 저장하는 공격코드저장 단계(S25);
    를 포함하는 해킹 방지용 모의 훈련 방법.
  4. 제1항에 있어서,
    상기 방어 단계(S40)는
    시간 또는 공격 성공 횟수를 포함하는 적어도 하나의 미리 설정된 조건을 만족하는 경우 실행되는 것을 특징으로 하는 해킹 방지용 모의 훈련 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 기계학습 단계(S50)는
    도커는 DSL(Domain Specific Language)로 서비스 요청에 대응되는 도커 파일(Docker file)을 생성하는 것을 특징으로 하는 해킹 방지용 모의 훈련 방법.
  7. 제6항에 있어서,
    상기 기계학습 단계(S50)는
    상기 가상화된 클라우드 컴퓨팅 환경을 상기 서비스 요청에 대응되는 복수의 컨테이너로 분할하는 것을 특징으로 하는 해킹 방지용 모의 훈련 방법.
  8. 제1항에 있어서,
    상기 기계학습 단계(S50)는
    상기 운영자 단말(10)이 상기 가상화된 클라우드 컴퓨팅 환경을 통해 딥러닝 어플레이케이션을 배포하는 것을 특징으로 하는 해킹 방지용 모의 훈련 방법.
  9. 제 1항, 제 3항, 제 4항, 제 6항, 제 7항 또는 제 8항에 기재된 해킹 방지용 모의 훈련 방법을 구현하기 위한 프로그램이 저장된 컴퓨터 판독 가능한 기록매체.
  10. 제 1항, 제 3항, 제 4항, 제 6항, 제 7항 또는 제 8항에 기재된 해킹 방지용 모의 훈련 방법을 구현하기 위한 컴퓨터 판독 가능한 기록매체에 저장된 프로그램.
KR1020200055685A 2020-05-11 2020-05-11 해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램 KR102186127B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200055685A KR102186127B1 (ko) 2020-05-11 2020-05-11 해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200055685A KR102186127B1 (ko) 2020-05-11 2020-05-11 해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램

Publications (1)

Publication Number Publication Date
KR102186127B1 true KR102186127B1 (ko) 2020-12-03

Family

ID=73779421

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200055685A KR102186127B1 (ko) 2020-05-11 2020-05-11 해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램

Country Status (1)

Country Link
KR (1) KR102186127B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114095258A (zh) * 2021-11-23 2022-02-25 北京天融信网络安全技术有限公司 攻击防御方法、装置、电子设备及存储介质
WO2023158086A1 (ko) * 2022-02-18 2023-08-24 중부대학교 산학협력단 진단서버에 의해 제공되는 취약점 진단 방법
KR20230138635A (ko) * 2022-03-24 2023-10-05 주식회사 지오그레이트 데이터 해킹 자동 방어 시스템 및 그 구동방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101427144B1 (ko) 2011-10-27 2014-11-04 이준범 해킹방지 방화벽 시스템의 해킹방지 방법
KR20180056756A (ko) * 2015-09-24 2018-05-29 서케이든스 코퍼레이션 임무 기반의 게임-실행형 사이버 교육 시스템 및 방법
KR20190076212A (ko) * 2017-12-22 2019-07-02 건국대학교 산학협력단 도커를 이용한 컨테이너 기반 딥러닝 개발 플랫폼 제공 방법 및 장치
KR20200018947A (ko) * 2018-08-13 2020-02-21 한국과학기술원 분산 버전 관리 시스템 기반 공격방어 형식의 해킹 플랫폼 제공 시스템 및 이를 이용한 해킹 대회 제공 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101427144B1 (ko) 2011-10-27 2014-11-04 이준범 해킹방지 방화벽 시스템의 해킹방지 방법
KR20180056756A (ko) * 2015-09-24 2018-05-29 서케이든스 코퍼레이션 임무 기반의 게임-실행형 사이버 교육 시스템 및 방법
KR20190076212A (ko) * 2017-12-22 2019-07-02 건국대학교 산학협력단 도커를 이용한 컨테이너 기반 딥러닝 개발 플랫폼 제공 방법 및 장치
KR20200018947A (ko) * 2018-08-13 2020-02-21 한국과학기술원 분산 버전 관리 시스템 기반 공격방어 형식의 해킹 플랫폼 제공 시스템 및 이를 이용한 해킹 대회 제공 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114095258A (zh) * 2021-11-23 2022-02-25 北京天融信网络安全技术有限公司 攻击防御方法、装置、电子设备及存储介质
CN114095258B (zh) * 2021-11-23 2024-02-06 北京天融信网络安全技术有限公司 攻击防御方法、装置、电子设备及存储介质
WO2023158086A1 (ko) * 2022-02-18 2023-08-24 중부대학교 산학협력단 진단서버에 의해 제공되는 취약점 진단 방법
KR20230124189A (ko) * 2022-02-18 2023-08-25 중부대학교 산학협력단 진단서버에 의해 제공되는 취약점 진단 방법
KR102679203B1 (ko) * 2022-02-18 2024-06-26 중부대학교 산학협력단 진단서버에 의해 제공되는 취약점 진단 방법
KR20230138635A (ko) * 2022-03-24 2023-10-05 주식회사 지오그레이트 데이터 해킹 자동 방어 시스템 및 그 구동방법
KR102654104B1 (ko) * 2022-03-24 2024-04-04 주식회사 지오그레이트 데이터 해킹 자동 방어 시스템 및 그 구동방법

Similar Documents

Publication Publication Date Title
US11425161B2 (en) Computer-implemented method, a system and a computer program for identifying malicious URI data items
El Kafhali et al. Security threats, defense mechanisms, challenges, and future directions in cloud computing
US11483318B2 (en) Providing network security through autonomous simulated environments
KR102186127B1 (ko) 해킹 방지용 모의 훈련 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램
US10567432B2 (en) Systems and methods for incubating malware in a virtual organization
Sharma et al. Advanced persistent threats (apt): evolution, anatomy, attribution and countermeasures
US8918866B2 (en) Adaptive rule loading and session control for securing network delivered services
Wu et al. Automated adaptive intrusion containment in systems of interacting services
Locasto et al. Software self-healing using collaborative application communities
Zineddine Vulnerabilities and mitigation techniques toning in the cloud: A cost and vulnerabilities coverage optimization approach using Cuckoo search algorithm with Lévy flights
Hu et al. MNOS: a mimic network operating system for software defined networks
Zhang et al. Effective network vulnerability assessment through model abstraction
Gnatyuk et al. Studies on Cloud-based Cyber Incidents Detection and Identification in Critical Infrastructure.
Berdibayev et al. A concept of the architecture and creation for siem system in critical infrastructure
Sepczuk Dynamic web application firewall detection supported by cyber mimic defense approach
Sethuraman et al. Flow based containerized honeypot approach for network traffic analysis: An empirical study
Alsmadi Cyber threat analysis
US9621586B2 (en) Methods and apparatus for enhancing business services resiliency using continuous fragmentation cell technology
Zammit A machine learning based approach for intrusion prevention using honeypot interaction patterns as training data
Pitropakis et al. If you want to know about a hunter, study his prey: detection of network based attacks on KVM based cloud environments
Lee et al. Assessment of the distributed ledger technology for energy sector industrial and operational applications using the mitre att&ck® ics matrix
Kshetri et al. algoXSSF: Detection and analysis of cross-site request forgery (XSRF) and cross-site scripting (XSS) attacks via Machine learning algorithms
Sauber et al. A novel hadoop security model for addressing malicious collusive workers
Verma et al. Uncovering collateral damages and advanced defense strategies in cloud environments against DDoS attacks: A comprehensive review
Mills Enhancing Anomaly Detection Techniques for Emerging Threats

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant