자동화 된 바이너리

마지막 업데이트: 2022년 3월 2일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

자동화 된 바이너리

You are using an outdated browser. Please upgrade your browser to improve your experience.

Application Transformer for VMware Tanzu 는 CSA(Cloud Suitability Analyzer) 도구와 기본적으로 통합되어 있습니다. CSA 도구는 환경에서 실행 중인 모든 애플리케이션과 해당 서비스를 이해하는 프로세스를 자동화합니다. 애플리케이션을 그룹화하고 설정의 유사점을 강조 표시하고 패턴을 자동으로 구축합니다. 이는 애플리케이션 마이그레이션을 계획하고, 마이그레이션을 스케줄링하고, 공장 패턴을 구축하는 데 도움이 됩니다.

CSA는 선택되거나 필터링된 각 VM을 검토하여 VM에서 실행 중인 대상 구성 요소(JAVA 바이너리)를 식별합니다. 아키타입 또는 패싯, 가져오기, 호출, 주석을 기반으로 애플리케이션과 서비스를 그룹화합니다. CSA는 임의 클러스터 번호를 생성하고 유사한 애플리케이션을 클러스터로 그룹화합니다.

사전 요구 사항

  • Tomcat: CATALINA_BASE/webapps/ 대상 바이너리(예: SampleHRApps.war)
  • Oracle WebLogic Server: DOMAIN_HOME 폴더
  • JBoss:
    • HOME/standalone/deployments/
    • HOME/standalone/data/
    • find
    • cd
    • unzip
    • tar
    • mkdir
    • pwd
    1. CSA를 사용하여 분석하려는 VM을 다시 검사합니다.
      1. 왼쪽 탐색 페이지에서 인벤토리 > 가상 시스템 으로 이동합니다.
      2. VM 검사.

      참고: 바이너리 분석 작업이 완료되면 검색된 애플리케이션의 바이너리 경로를 검토해야 합니다. 검색된 바이너리 경로가 올바르지 않으면 경로를 업데이트하여 바이너리 분석을 다시 실행해야 합니다.

      자동화 된 바이너리

      [YES24 X kittybunnypony] 나만의 독서 패턴 : 감각적인 패턴을 담은 9월의 굿즈 - 키티버니포니 파우치

      9월의 얼리리더 주목신간 : 웰컴 투 북월드 배지 증정

      [대학생X취준생] 꼭 공부를 해야 할 상황이라면? 2학기, 공부할 결심!

      박해선 저자의 머신러닝/딥러닝 패스

      [단독]『혼자 공부하는 파이썬』 개정판 출간

      내일은 개발자! 코딩테스트 대비 도서전

      [단독] 에듀윌 IT 자격증 기획전 - 가장 빠른 합격출구 EXIT

      YES24 트윈링 분철 : 인서트라벨/스티커 택1 증정

      9월 전사

      쇼핑혜택

      이 책을 구입하신 분들이 산 책

      품목정보
      출간일 2021년 03월 30일
      쪽수, 무게, 크기 616쪽 | 188*235*35mm
      ISBN13 9791161755069
      ISBN10 1161755063

      책소개 책소개 보이기/감추기

      현대 사회에서 컴퓨터는 필수적이다. 특히 최근 인공지능 기술의 발전으로 컴퓨터는 상당한 수준의 고급 기능을 제공하며 인간의 생활을 윤택하게 했다. 그렇지만 그 이면을 보면, 컴퓨터가 과연 똑똑한 것인지 의문을 품게 된다. 사람은 자신의 복잡한 자동화 된 바이너리 생각을 다양한 방식으로 처리할 수 있지만, 컴퓨터는 0과 1의 조합으로만 대상을 이해할 수 있다. 이 때문에 컴퓨터 관점의 언어를 저수준(low-level)이라고 부르고, 인간의 시각을 고수준(high-level)이라고 지칭한다. 서로 다른 국가의 사람들이 통용하는 언어가 다르듯이, 컴퓨터 역시 아키텍처나 운영체제에 따라 상이한 바이너리(이진 파일) 결과물을 사용한다. 그 때문에 사람이 다양한 종류의 컴퓨터 언어를 습득해 이해하는 것은 결코 쉽지 않다. 바이너리 분석이란 결국 이 둘 사이의 간극을 해결하는 일종의 '번역' 또는 '통역' 작업이라고 볼 수 있다. 이 책이 설명하는 여러 가지 기술을 통해, 컴퓨터와 심층적으로 소통할 수 있게 될 것이다.

      목차 목차 보이기/감추기

      1장. 바이너리란 무엇인가
      1.1 C언어로 작성된 프로그램의 컴파일 과정
      1.1.1 전처리 단계
      1.1.2 컴파일 단계
      1.1.3 어셈블 단계
      1.1.4 링킹 단계
      1.2 심벌과 스트립 바이너리
      1.2.1 심벌 자동화 된 바이너리 정보 확인하기
      1.2.2 바이너리 스트립: 관련 정보 은닉하기
      1.3 바이너리 디스어셈블
      1.3.1 목적 파일
      1.3.2 단독으로 실행가능한 바이너리 파일 분석하기
      1.4 바이너리 로딩과 실행
      1.5 이 장의 요약
      연습 문제

      2장. ELF 바이너리 포맷
      2.1 ELF 파일 헤더
      2.1.1 e_ident 배열
      2.1.2 e_type, e_machine, e_version 필드
      2.1.3 e_entry 필드
      2.1.4 e_phoff와 e_shoff 필드들
      2.1.5 e_flags 필드
      2.1.6 e_ehsize 필드
      2.1.7 e_*entsize 와 e_*num 필드
      2.1.8 e_shstrndx 필드
      2.2 섹션 헤더
      2.2.1 sh_name 필드
      2.2.2 sh_type 필드
      2.2.3 sh_flags 필드
      2.2.4 sh_addr, sh_offset, sh_size 필드
      2.2.5 sh_link 필드
      2.2.6 sh_info 필드
      2.2.자동화 된 바이너리 7 sh_addralign 필드
      2.2.8 sh_entsize 필드
      2.3 섹션
      2.3.1 .init 과 .fini 섹션
      2.3.2 .text 섹션
      2.3.3 .bss, .data, .rodata 섹션들
      2.3.4 지연 바인딩과 .plt, .got, .got.plt 섹션
      2.3.5 .rel.* 과 .rela.* 섹션
      2.3.6 .dynamic 섹션
      2.3.7 .init_array와 .fini_array 섹션
      2.3.8 .shstrtab, .symtab, .strtab, .dynsym, .dynstr 섹션
      2.4 프로그램 헤더
      2.4.1 p_type 필드
      2.4.2 p_flags 필드
      2.4.3 p_offset, p_vaddr, p_paddr, p_filesz, p_memsz 필드
      2.4.4 p_align 필드
      2.5 요약
      연습 문제

      3장. PE 바이너리 포맷요약 정리
      3.1 MS-DOS 헤더와 MS-DOS 스텁
      3.2 PE 시그니처, 파일 헤더, 옵션 헤더
      3.2.1 PE 시그니처
      3.2.2 PE 파일 헤더
      3.2.3 PE 옵션 헤더
      3.3 섹션 헤더 테이블
      3.4 섹션
      3.4.1 .edata와 .idata 섹션
      3.4.2 PE코드 섹션의 패딩
      3.5 요약
      연습문제

      4장. LIBBFD를 이용한 바이너리 로더 제작
      4.1 libbfd란 무엇인가?
      4.2 바이너리 로더의 기본 인터페이스
      4.2.1 바이너리 클래스
      4.2.2 섹션 클래스
      4.2.3 심벌 클래스
      4.3 바이너리 로더 구현하기
      4.3.1 libbfd 초기화하고 바이너리 열기
      4.3.2 바이너리 기본 정보 분석하기
      4.3.3 심벌 정보 불러오기
      4.3.4 섹션 정보 불러오기
      4.4 바이너리 로더 테스트하기
      4.5 요약
      연습문제

      2부. BINARY ANALYSIS FUNDAMENTALS

      5장 리눅스 바이너리 분석 기초
      5.1 file 명령어를 사용해 식별하기
      5.2 ldd 명령어를 사용해 의존성 점검하기
      ASCII 코드 신속하게 찾기
      5.3 xxd 명령어를 사용해 파일 내부 내용 확인하기
      5.4 readelf 명령어를 사용해 ELF 파일 형식 추출하기
      5.5 nm 명령어를 사용해 심벌 정보 분석하기
      5.6 strings 명령어를 사용해 단서 찾기
      5.7 strace와 ltrace 명령어를 사용해 시스템콜 및 라이브러리 호출 추적하기
      5.8 ojdump 명령어를 사용해 기계어 수준 동작 확인하기
      5.9 gdb 명령어를 사용해 동적으로 문자열 버퍼 덤프하기
      5.10 요약
      연습문제

      6장. 디스어셈블과 바이너리 분석 방법론
      6.1 정적 디스어셈블
      6.1.1 선형 디스어셈블
      6.1.2 재귀적 디스어셈블
      6.2 동적 디스어셈블
      6.2.1 예제: gdb로 바이너리 실행 추적하기
      6.2.2 코드 커버리지 전략
      6.3 디스어셈블된 코드와 데이터를 구조화하기
      6.3.1 코드 구조화
      .eh_frame 섹션을 이용한 함수 탐지
      6.3.2 데이터 구조화
      6.3.3 디컴파일
      6.3.4 중간 언어 표현식
      6.4 주요 분석 방법론
      6.4.1 바이너리 분석 요소
      6.4.2 제어 흐름 분석
      6.4.3 데이터 흐름 분석
      6.5 디스어셈블시 컴파일러 설정 효과
      6.6 요약
      연습문제

      7장. ELF 바이너리 코드 인젝션 기법
      7.1 헥스 에디터를 이용한 원초적 수정 방법
      정확한 opcode 찾기
      7.1.1 한 바이트 버그 탐구하기
      7.1.2 한 바이트 버그 수정하기
      7.2 LD_PRELOAD를 사용해 공유 라이브러리 동작 변경하기
      7.2.1 힙 오버플로 취약점
      7.2.2 힙 오버플로 탐지하기
      7.3 코드 섹션 끼워넣기
      7.3.1 ELF 섹션 끼워넣기: 전체적 맥락
      7.3.2 elfinject 를 사용해 ELF 섹션 삽입하기
      7.4 삽입된 코드 호출하기
      7.4.1 엔트리 포인트 개조
      7.4.2 생성자와 소멸자 탈취하기
      7.4.3 GOT 엔트리 탈취하기
      7.4.4 PLT 엔트리 탈취하기
      7.4.5 직접 및 간접 호출 조작하기
      7.자동화 된 바이너리 5 요약
      연습문제

      3부. ADVANCED BINARY ANALYSIS

      8장. 자체 제작 디스어셈블 도구 구현
      8.1 굳이 디스어셈블 과정을 자체 제작할 필요성은?4
      8.1.1 자체 제작 디스어셈블 도구 사례: 난독화된 코드
      난독화되지 않은 바이너리에서도 코드 겹침 기법이 적용될 수 있다
      8.1.2 자체 제작 디스어셈블 도구를 개발할 또 다른 필요성
      8.2 캡스톤 살펴보기
      8.2.1 캡스톤 설치하기
      8.2.2 캡스톤으로 선형 디스어셈블 도구 제작하기
      8.2.3 캡스톤 C API 살펴보기
      8.2.4 캡스톤으로 재귀적 디스어셈블 도구 제작하기
      8.3 ROP 가젯 스캐너 구현
      8.3.1 ROP 개요
      8.3.2 ROP 가젯 탐색하기
      8.4 요약
      연습문제

      9장. 바이너리 계측
      9.1 바이너리 계측이란 무엇인가?
      9.1.1 바이너리 계측 API
      9.1.2 정적 및 동적 바이너리 계측 비교
      9.2 정적 바이너리 계측
      9.2.1 int 3 방법
      9.2.2 트램펄린 방법
      위치 독립 코드에 대한 트램펄린 적용
      9.3 동적 바이너리 계측
      9.3.1 DBI 시스템 구조
      9.3.2 Pin 개요
      9.4 Pin을 사용한 프로파일링
      9.4.1 프로파일링 도구의 자료구조 및 초기 설정을 위한 코드
      9.4.2 함수 심벌 분석하기
      9.4.3 기본 블록 계측하기
      9.4.4 제어 흐름 명령어 계측하기
      9.4.5 명령어 개수, 제어 흐름 변경 및 시스템 콜 횟수 측정하기
      9.4.6 프로파일링 프로그램 테스트하기
      9.5 Pin을 사용한 자동화 바이너리 패킹 해제
      9.5.1 바이너리 패킹 개요
      9.5.2 언패킹 도구의 자료구조 및 설정 코드
      9.5.3 메모리 사용 기록 계측하기
      9.5.4 제어 흐름 명령어 계측하기
      9.5.5 메모리 사용 기록 추적하기
      9.5.6 OEP 탐지 및 언패킹된 바이너리 덤프하기
      9.5.7 언패킹 프로그램 테스트하기
      9.6 요약
      연습문제

      10장. 동적 오염 분석 원리
      10.1 DTA란 무엇인가?
      10.2 DTA의 세가지 단계: DTA의 세 가지 요소: 오염원, 오염 지역, 오염 전파
      10.2.1 오염원 정의하기
      10.2.2 오염 지역 설정하기
      10.2.3 오염 전파 추적하기
      10.3 DTA를 사용해 Heartbleed 버그 탐지하기
      10.3.1 Heartbleed 취약점에 대한 간략한 요약
      10.3.2 오염 분석 방법을 통해 Heartbleed 탐지하기
      10.4 DTA 설계 요소: 오염 단위, 오염 색깔, 오염 정책
      10.4.1 오염 단위
      10.4.2 오염 색깔
      10.4.3 오염 전파 정책
      10.4.4 과잉 오염 및 과소 오염
      10.4.5 제어 의존성
      10.4.6 섀도 메모리
      10.5 요약
      연습문제

      11장. LIBDFT를 이용한 동적 오염 분석 도구 개발
      11.1 libdft 소개
      11.1.1 libdft 내부 구조
      11.1.2 오염 정책
      11.2 DTA를 사용해 원격 제어 탈취 탐지하기
      11.2.1 오염 정보 확인하기
      11.2.2 오염원: 수신된 바이트의 오염
      11.2.3 오염 지역: execve 함수의 매개 변수 점검하기
      11.2.4 제어권 탈취 시도 탐지하기
      11.3 암시적 제어 흐름을 통해 DTA 우회하기
      11.4 DTA를 사용해 데이터 유출 탐지하기
      11.4.1 오염원: 파일 열기 작업에 대한 오염 추적
      11.4.2 오염 지역: 데이터 유출을 시도하는 네트워크 송신 감시
      11.4.3 데이터 유출 시도 탐지하기
      11.5 요약
      연습문제

      12장. 기호 자동화 된 바이너리 실행 원리
      12.1 기호 실행 개요
      12.1.1 기호적 vs 구체적 실행
      12.1.2 기호 실행의 다양한 방법론 분류 및 각 한계점
      12.1.3 기호 실행의 확장 용이성 향상하기
      12.2 Z3을 이용한 제약조건 풀이
      12.2.1 명령어의 도달 가능성 증명
      12.2.2 명령어의 도달 불가능성 증명
      12.2.3 수식의 유효성 증명
      12.2.4 표현식 간소화
      12.2.5 비트 벡터를 사용해 기계어 코드의 제약 조건 모델링하기
      12.2.6 비트 벡터로 표현된 모호한 표현식 풀이하기
      12.3 요약
      연습문제

      13장. Triton을 이용한 기호 실행 실습
      13.1 Triton 개요
      13.2 추상 구문 트리를 이용해 상태 정보 관리하기
      13.3 Triton을 이용한 백워드 슬라이싱
      13.3.1 Triton 헤더 파일 및 Triton 환경 설정
      13.3.2 심벌 환경 설정 파일
      13.3.3 명령어 에뮬레이팅
      13.3.4 Triton의 아키텍처 설정
      13.3.5 백워드 슬라이스 계산
      13.4 Triton을 이용한 코드 충족도 확대
      13.4.1 기호 변수 생성
      13.4.2 새로운 경로를 위한 모델 찾기
      13.4.3 코드 충족도 도구 실행
      13.5 자동으로 취약점 익스플로잇하기
      13.5.1 취약한 프로그램
      13.5.2 취약한 호출 지점의 주소 찾기
      13.5.3 익스플로잇 생성 도구 구현
      13.5.4 루트 셸 획득
      13.6 요약
      연습문제

      Binary Authorization 가격 책정

      Binary Authorization의 정식 버전(GA)은 이 문서의 뒷부분에서 설명하는 자동화 된 바이너리 Anthos 플랫폼의 일부 또는 독립형 기능으로 사용할 수 있습니다.

      유예 기간

      기존 고객의 Binary Authorization 유예 기간은 2021년 9월 16일에 끝납니다. 유예 기간 후에는 이 문서의 뒷부분에서 설명하는 Binary Authorization 가격이 적용될 수 있습니다.

      Cloud Run용 Binary Authorization 가격 책정

      Cloud Run용 Binary Authorization은 무료로 자동화 된 바이너리 제공됩니다.

      Anthos용 Binary Authorization 가격 책정

      Anthos 클러스터에는 Binary Authorization 수수료가 적용되지 않습니다.

      Anthos(가격 책정)에 대해 자세히 알아보려면 영업 담당자에게 문의하여 Anthos에 등록하세요.

      Google Kubernetes Engine(GKE)용 Binary Authorization 가격 책정

      GKE용 Binary Authorization의 가격은 클러스터당 1시간에 $0.01613(1초 단위로 청구됨)입니다. 약 $12/월이며 GKE 클러스터에서 청구된 기타 모든 수수료에 추가로 청구됩니다. 클러스터 크기 및 토폴로지와 관계없이(클러스터가 영역인지 또는 리전인지 여부) Binary Authorization을 사용 설정한 모든 클러스터에 정액 요금이 청구됩니다.

      GKE용 Binary Authorization은 무료 등급을 제공합니다. 무료 등급은 결제 계정당 월 $12의 크레딧을 제공합니다. 이 크레딧은 적어도 매달 단일 클러스터의 전체 비용을 충당합니다.

      다음 예시에서는 조직의 결제 계정에 수수료 및 무료 등급 크레딧이 적용되는 방식을 보여줍니다.

      조직의 결제 계정 조직의 클러스터 Binary Authorization을 사용 설정한 클러스터 시간/월 사용된 무료 등급 크레딧 월별 총 Binary Authorization 요금
      (클러스터당 1시간에 $0.01613)
      account_1 cluster_1 744 $12.00 $0
      account_2 cluster_1 744 $12.00 $0
      account_2 cluster_2 744 해당 사항 없음 $12.00
      account_2 cluster_3 300 해당 사항 없음 $4.86

      가격 계산기

      Google Cloud 가격 계산기를 사용해 클러스터 관리 수수료 및 워커 노드 가격을 포함한 월별 Binary Authorization 요금을 추정할 수 있습니다.

      베타 사용자

      참고: 2020년 3월 16일부터 베타 API는 더 이상 지원되지 않습니다. 이 API 사용자는 정식 버전 API로 마이그레이션해야 합니다. Binary Authorization GA API를 사용한 워크로드 실행에 대한 추가 고려사항은 정식 버전 마이그레이션 가이드를 참조하세요.

      자동화 된 바이너리

      비주얼 IT

      부가서비스

      서비스 안내

      패밀리 미디어

      AI 사이버 공격·방어 응용. KAIST, '바이너리 분석' 원천 기술 개발

      Photo Image

      한국과학기술연구원(KAIST)이 인공지능(AI) 시스템을 이용해 해킹 자동 공격·방어 가능한 '바이너리 분석' 원천 기술 개발에 성공했다. 해당 기술은 소프트웨어(SW)취약점 분석부터 보안패치까지 다양한 분야에 적용 가능하다. 이미 기술 사업화를 원하는 국내 기업 문의가 이어질 정도로 업계 기대가 크다.

      12일 차상길 KAIST 전산학부 교수와 연구실 학생은 3년 간 사이버보안연구센터(센터장 김용대)와 AI 활용 바이너리 코드 취약점 분석·탐지 시스템 'B2-R2'를 개발 완료했다고 밝혔다.

      B2-R2는 과학기술정보통신부 연구과제 '바이너리 코드 분석을 위한 자동화된 역공학 및 취약점 탐지 기반 기술 개발' 성과다.

      바이너리 분석 플랫폼은 SW보안 핵심이다. SW분석 시 취약점, 버그 판별 기초가 된다. 이를 활용해 취약점과 악성코드 분석, 보안 패치 등 안정성 강화해 쓴다. 해킹 자동 방어·공격도 가능하다. 기존 취약점 분석은 화이트박스, 블랙박스, 역공학 분석으로 이뤄졌지만 이들 방법은 소스코드에 의존해 분석에 한계가 있다. 인력 중심으로 비용이 많이 든다.

      차상길 KAIST 전산학부 교수는 “보안 분야에 AI를 적용하도록 하는 원천 기술이자 토대”라면서 “미국, 프랑스 등 보안 선진국 기술과 비교해 성능, 다양성 측면에서 월등하다”고 설명했다.

      B2-R2 시스템은 미국 카네기멜론대학교(CMU) 'BAP'와 캘리포니아대학교 산타바바라 캠퍼스(UCSB)의 '앵거(Angr)'를 뛰어넘는다. 이들 시스템과 비교해 최신 함수형 언어 F#을 사용해 분석 용이성을 극대화 했다. 이를 바탕으로 윈도, 리눅스, 맥, 안드로이드, iOS 등 모든 운용체계에서 사용한다. 분석속도는 기존 플랫폼과 비교해 2배~100배 이른다. 32개 프로그래밍 언어와 연동한다.

      이미 해당 기술 사업화를 원하는 기업 문의도 이어진다. 해당 기술을 활용해 다양한 보안솔루션 적용 가능한 만큼 성장 가능성이 크기 때문이다.

      Photo Image

      김용대 KAIST 사이버보안연구센터장은 “우리나라에서도 세계 최고 수준을 자동화 된 바이너리 넘어서는 'AI기반의 취약점 자동 탐지 및 대응' 분야 핵심 기술을 확보하게 됐다”면서 “이미 다양한 기업으로 부터 기술이전을 받을 수 있는지 문의가 이어진다”고 말했다.

      바이너리 분석 원천 기술개발 후속 과제로 이어지지는 못했다. 현재 개발 완료한 바이너리 원천 기술은 바이너리를 중간언어로 변환하는데 초점을 맞췄다. 이를 사람이 일반적으로 이해하는 언어로 변환하는 기술개발까지 이어져야 한다는 설명이다.


      차 교수는 “바이너리를 사람이 확인 가능한 언어로 변환하는 외산 툴이 있지만 라이선스 비용이 인당 수 천 만원을 호가한다”면서 “이를 국산화 하는 토대를 만들었지만 후속과제까지 이어지지 못해 아쉬움이 남는다”고 말했다.


0 개 댓글

답장을 남겨주세요