21일차 : 서버 프로그램 구현

Dev_HG·2020년 7월 25일
0

1. 보안 취약성 식별

1. 보안 취약성(Vulnerability)의 개념

  • 정보 시스템에 불법적인 사용자의 접근을 허용할 수 있는 위협이다.
  • 정보 시스템의 정상적인 서비스를 방해하는 위협이다.
  • 정보시스템에서 관리하는 중요 데이터의 유출, 변조, 삭제에 대한 위협이다.

2. 침투 테스트

  • 응용 프로그램의 보안 취약점, 위협 요소, 허점을 탐지하는 데 도움을 준다.
  • 위험한 코드 삽입, SQL 삽입, 매개변수화, 권한 없는 입력 등의 공격을 수행하여 안전하지 않은 비즈니스 로직과 악용 가능성이 있는 부적절한 보안 조치를 식별하고 평가한다.
    [침투 테스트의 절차]
  • 정찰 : 목표 애플리케이션에 관련된 정보를 수집
  • 탐색 : 애플리케이션을 검사하여 보안 위협에 관련된 상세 정보를 확인
  • 접근 권한 취득 : 애플리케이션의 허점을 찾아내어 악성 코드를 삽입하여 데이터에 접근할 수 있는 권한을 획득한 후 이를 이용한 공격을 수행
  • 액새스 유지 : 애플리케이션 내에 접근 권한을 계속 유지하여 다수의 공격테스트 수행
  • 추적 방지 : 공격자는 자신의 흔적을 남기지 않도록 로그, 수집된 데이터 등의 접근 이력을 모두 제거

3. 취약성 공격(Exploit Attack)

  • 보안 버그나 잘못된 설정 등 결함을 공격하여 공격자가 원하는 결과를 얻기 위한 코드, 프로그램, 스크립트 또는 이를 이용하는 행위를 의미
  • 취약성 공격의 목표는 대상 시스템을 장악하여 정보를 빼내거나 혹은 다른 용도로 악용하기 위함이다.
  • 기존 취약점 공격과는 달리 피해 시스템의 중요 데이터를 암호화하여 인질로 삼고 금전을 요구하는 랜섬웨어(Ransomware)도 취약점 공격을 통해 권한을 획득하고 있다.

4. 취약성에 따른 공격 기법

  • 취약성에 따른 공격기법은 DoS, 오버플로우, 권한상승, SQL 인젝션, XSS등이 있다.
  • 서비스 거부(DoS): 무의미한 서비스 요청 등의 반복을 통해 특정 시스템의 가용자원을 소모시켜 서비스 가용성을 저하시키는 공격기법
  • 코드 실행: 응용 프로그램이 적절한 입력 유효성 검사 없이 쉘(Shell) 명령을 실행하는 취약점을 이용하여 공격자가 원하는 임의 코드가 실행되도록 하는 공격 기법
  • 버퍼 오버플로우 : 정해진 메모리의 범위를 넘치게 해서 원래의 리턴 주소를 번경시켜 임의의 프로그램이나 함수를 실행시키는 시스템 해킹 기법
  • 정보 수집 : 공격 전 서버 또는 시스템의 취약점, 네트워크 경로, 방화벽 설치 유무를 알아내고 정보를 수집하는 공격 기법
    cf : 방화벽(Firewall) : 미리 정의된 보안 규칙을 기반으로 외부로부터 불법 침입과 내부의 불법 정보 유출을 방지하고, 내/외부 네트워크의 상호 간 영향을 차단하기 위한 보안 시스템ㅁ이다.
  • 권한 상승: 악성 프로그램 설치 후 데이터 조회 변경, 삭제 등을 통한 권한 상승으로 루트권한을 획득하는 공격기법
  • SQL 인젝션: 데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로부터 정보를 열람할 수 있는 공격 기법
  • 크로스 사이트 스크립팅(XSS) : 공격자가 게시판에 악성 스크립트를 작성, 삽입하여 사용자가 그것을 보았을 때 이벤트 발생을 통해 사용자의 쿠키정보, 개인 정보 등을 특정사이트로 전송하는 공격기법
  • 사이트 간 요청 위조 공격(CSRF) : 웹 사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격기법
  • 디렉터리 접근: HTTP 기반의 공격으로 액세스가 제한된 디렉터리에 접근하여, 서버의 루트 디렉터리 에서 외부 명령을 실행하여 파일, 웹소스 등을 강제로 내려 받을 수 있는 공격기법

5. 시큐어 코딩(Secure Coding)

  • 소프트웨어 개발 과정에서 개발자의 실수, 논리적 오류 등으로 인해SW에 내포될 수 있는 보안 취약점을 최소화하고, 안전한 소프트웨어를 개발하기 위한 일련의 활동

2. API

1. API(Application Programming Interface)의 개념

  • 애플리케이션을 만둘기 위한 하위 함수, 프로토콜, 도구들의 집합을 말한다.
  • 명확하게 정의된 다양한 컴포넌트 간의 통신 방법

2. API의 유형

1. 오픈API(Open API) : 누구나 쉽게 접근하여 정보를 공유하기 위해 만들어진 API ex 기상청 API

2. 비공개API(Close API): 권한이 있는 일부 사용자들에게만 정보를 제공하기 위해 만들어진 API(ex:사내 API)

3. API의 목적

  • API를 통해 프로그래머가 특정 기술을 사용하기 쉽게 만들어준다.
  • 개발자들에게 필요한 기능들을 추상화하고, 객체, 클래스 등을 제공

4. API의 종류

1. 윈도우즈 API

  • 마이크로소트프 윈도우즈 운영체제가 사용하는 API
  • c,c++ 프로그램에서 직접 운영체제와 상호 작용할 수 있도록 만들어짐
  • 윈도우즈 운영체제에 대한 기본 서비스, 고급 서비스, 사용자 인터페이스, 네트워크 서비스, 셀 등 여러 기능들을 제공

2. 웹 API

  • 웹 어플리케이션에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 API
  • 대표적인 웹 API의 기술로는 XML,JSON,SOAP,REST등의 기술을 활용
  • XML(Extensible Markup Language) : XML은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다.
  • 제이슨(JSON): 비동기 브라우저/서버 통신(AJAX)을 위해 속성-값 쌍, 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
  • SOPA(Simple Object Access Protocol) : 웹서비스에서 기본적인 메시지를 전달하는 기반이 되는 HTTP, HTTPS, SMTP 등을 통해 XML기반의 메시지를 컴퓨터 네트워크상에서 교환하는 프로토콜이다.
  • 레스트(REST) : 웹과 같은 분산 하이퍼 미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP메소드로 주고받는 웹 아키텍처이다.

3. 오픈 API

  • API 중에서 플랫폼의 기능과 콘텐츠를 외부에서 웹 프로토콜(HTTP)로 호출해 사용할 수 있게 개방(Open)한 API
  • 개발자 사이트 등에서 제공하는 지도, 검색, 머신러닝 등 대부분 API는 HTTP로 호출할 수 있는 오픈 API에 해당
  • 머신러닝(Machine Learning): 인공지능의 분야 중 하나로, 인간의 학습 능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술

4. Java API

  • 자바를 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리의 집합
  • 입출력, 화면 구성, 이미지, 네트워크와 같이 복잡하지만 필요한 클래스들을 미리구현하여 사용자가 쉽게 구현하도록 하는 API
profile
꾸준함

0개의 댓글