U-01 root 계정 원격접속 제한 ■ 항목 중요도 : 상 ■ 점검내용 시스템 정책에 root 계정의 원격터미널 접속차단 설정이 적용되어 있는지 점검 ■ 점검목적 관리자계정 탈취로 인한 시스템 장악을 방지하기 위해 외부 비인가자의 root 계정 접근 시도를 원천적으로 차단하기 위함 ■ 보안위협 root 계정은 운영체제의 모든기능을 설정 및 변경이 가능하여(프로세스, 커널변경 등) root 계정을 탈취하여 외부에서 원격을 이용한 시스템 장악 및 각종 공격으로(무작위 대입 공격) 인한 root 계정 사용 불가 위협 ■ 참고 ※ root 계정 여러 사용자가 사용하는 컴퓨터에서 모든 기능을 관리할 수 있는 총괄권한을 가진 유일한 특별 계정. 유닉스 시스템의 루트(root)는 시스템 관리자인 운용 관리자(Sup..
네트워크 기초 용어 설명 ■ 토큰링(TokenRing)이란? IBM에 의해 개발된 프로토콜 네트워크 상에서 토큰을 가진 PC만이 네트워크에 데이터를 실어 보낼 수 있음 당연히 이러한 방식으로 통신이 이루어지면 네트워크 충돌이 발생하지 않음 다만, 토큰을 보유하고 있어야 데이터를 보낼 수 있다는 점에서, 보낼 데이터가 있다 하더라도 토큰을 가지고 있어야 통신이 가능하다는 점에서 이더넷 통신보다 적게는 25배에서 많게는 100배 가량 속도차이가 나므로, 현재는 거의 사용하지 않는 방식의 통신 프로토콜 ※토큰을 가진 순서에 따라 통신이 일어난다는 점에서 순서가 없이 아무나 통신이 가능한 이더넷과는 방식이 다름 ■ 유니캐스트란?(Unicast) 네트워크 상에서 가장 많이 사용되는 트래픽. 유니캐스트 통신 방식에..
안드로이드란?(Android) ■ 안드로이드란 Android는 주로 스마트폰 및 태블릿과 같은 터치스크린 모바일 장치용으로 설계된 Linux 커널 및 기타 오픈 소스 소프트웨어의 수정된 버전을 기반으로 하는 모바일 운영체제이며, Open Handset Alliance로 알려진 개발자 컨소시엄에서 개발하고 구글에서 상업적으로 후원중. 안드로이드 기기의 아키텍처, 애플리케이션이 어떻게 컴파일되는지, 가장 중요한 것은 안드로이드 애플리케이션의 구성을 이해하는 것 ■ 안드로이드의 구성 하드웨어 Android의 주요 하드웨어 플랫폼은 이후 릴리스에서도 지원되는 x86 및 x86-64 아키텍처가 있는 ARM Android 5.0 Lollipop부터 32비트 변형 외에도 모든 플랫폼의 64비트 변형이 지원됨 커널 A..
ADB 알아보기 ■ ADB란? ADB(android debug bridge)는 안드로이드 에뮬레이터나 PC에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구이며, 기기와 통신할 수 있는 커맨드라인을 제공하며, 세 가지 구성요소(클라이언트, 데몬, 서버)를 포함. ADB는 안드로이드 SDK 플랫폼 도구 패키지에 포함되어 있으므로, SDK 설치만으로 간편하게 사용 가능. 경로는 안드로이드 하위 폴더인 Android\sdk\platform-tools에 위치함. 특히, 자주 사용하게 될 기능으로 ADB는 쉘 기능을 제공하여 연결된 안드로이드 에뮬레이터나 장치에서 원격 쉘을 사용할 수 있도록 하는 기능을 제공. "adb shell"이라는 명령을 사용. 만약 ADB 서버가 구동되어 있지 않다면, 위와 같은..
YASCA ■ yasca란? Yasca는 프로그램 소스코드의 보안 취약성, 코드 품질, 성능 및 모범 사례 준수를 찾는 오픈 소스 프로그램입니다. FindBugs, PMD, JLint, 자바스크립트 린트, PPLint, Cppcheck, ClamAV, Pixy, RATS와 같은 외부 오픈 소스 프로그램을 활용하여 특정 파일 형식을 검색하고 야스카용으로 개발된 많은 맞춤형 스캐너를 포함하고 있습니다. HTML, CSV, XML, MySQL, SQLite 및 기타 형식으로 보고서를 생성하는 명령줄 도구입니다. 잘 알려진 OWASP 보안 프로젝트와 미국 국토안보부 웹 사이트의 정부 소프트웨어 보안 도구 검토에도 비활성 프로젝트로 등재되어 있습니다. 소스코드 진단 및 시큐어코딩에 활용할 수 있습니다. 소개시켜드..
안드로이드 구성 요소 ■ 안드로이드 어플리케이션(APK) 필수 구성 요소 안드로이드 어플리케이션은 어플리케이션 매니페스트 파일에 의해 바인딩된 6가지 필수사항(액티비티(Activity), 서비스(Service), 콘텐츠 프로바이더(Contents Provider), UI, Intent, 브로드캐스트 리시버(BroadCast Receiver)으로 구성됨. ※액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더를 묶어 컴포넌트라고 함 Activity(액티비티) 안드로이드의 클래스 구현될 때, 윈도우나 자바프레임처럼 사용자 인터페이스가 있는 단일 화면을 나타냄. 각 화면은 메뉴를 클릭하거나 버튼을 클릭하는 등과 같은 특정한 액션에 의해 전환되는데, 각 화면이 모두 액티비티. 모든 앱에는 처음 실행될 때 ..
OSI 7계층(OSI 7 Layer) ■ OSI 7계층이란? OSI(Open Systems Interconnection) 7 레이어는 국제 표준 기구인 ISO(International Organization for Standardization)에서 만듦. 통신이 일어나는 과정을 7개의 단계로 나누었으며, 통신을 7개의 단계별로 표준화하여 그 효율성을 높이기 위해서 사용 OSI 7계층은 다음과 같이 나누어짐 - 응용 계층(application layer) - 표현 계층(presentation layer) - 세션 계층(session layer) - 전송 계층(transprot layer) - 네트워크 계층(network layer) - 데이터 링크 계층(datalink layer) - 물리 계층(physi..
모바일 어플리케이션 디컴파일하기 ■ 디컴파일 개요 Android Manifest 앱에 필수로 들어가야되며, 앱에 대한 필수적인 정보를 담고 있음. 특히, 앱의 패키지 이름과 사용되는 컴포넌트 및 권한 등이 전부 담겨 있음 DEX 안드로이드 환경에서의 실행 파일 Java 코드로 작성된 컴파일된 class 파일을 DX 도구를 사용해 변환시킨 파일 - Java 바이트 코드가 달빅 다이트 코드로 변환 달빅 가상머신에서 구동 - 실행되는 앱마다 가상머신을 생성해 구동시킴 SMALI DEX 바이너리를 사람이 읽을 수 있도록 표현. DEX를 디코딩 작업으로 추출할 수 있음. Smali 파일의 코드를 분석해 프로그램의 실행 원리 파악 가능 Smali 코드를 읽고, 수정 후 재컴파일해서 프로그램 수정 가능 (조작하면 동..
■ 에러처리 에러를 처리하지 않거나, 불충분하게 처리하여 에러 정보에 중요정보(시스템 내부정보 등)가 포함될 때, 발생할 수 있는 취약점으로 에러를 부적절하게 처리하여 발생하는 보안약점이다. 부적절한 예외 처리 ■ 개요 프로그램 수행 중에 함수의 결과 값에 대한 적절한 처리 또는 예외 상황에 대한 조건을 적절하게 검사 하지 않을 경우, 예기치 않은 문제를 야기할 수 있다. ■ 안전한 코딩 기법 값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 의도했던 값인지 검사하고, 예외 처리를 사용 하는 경우에 광범위한 예외 처리 대신 구체적인 예외 처리를 수행한다. 코드예제 다음 예제는 다양한 예외가 발생할 수 있음에도 불구하고 광범위한 예외 처리로 예외상황에 따른 적절한 조치를 처리 할 수 없다. 안전하지 ..
■ 보안기능 보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점으로 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 포함된다. 무결성 검사없는 코드 다운로드 ■ 개요 원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고, 이를 실행하는 제품들이 종종 존재한다. 이는 호스트 서버의 변조, DNS 스푸핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있도록 한다. 파일(및 해당 소프트웨어) 무결성을 확인하는 두 가지 주요 방법으로는 암호화 해시 및 디지털 서명이 있다. 무결성을 보장하기 위해 해시를 사용하고 가능하면 적절한 코드 서명 인증서를 사용하고 확인하는 것이 더 안전하다...
■ 보안기능 보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점으로 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 포함된다. 취약한 비밀번호 허용 ■ 개요 사용자에게 강한 패스워드 조합규칙을 요구하지 않으면, 사용자 계정이 취약하게 된다. 안전한 패스워드를 생성하기 위해서는 「패스워드 선택 및 이용 안내서」의 패스워드 설정규칙을 적용해야 한다. ■ 안전한 코딩 기법 패스워드 생성 시 강한 조건 검증을 수행한다. 비밀번호(패스워드)는 숫자와 영문자, 특수문자 등을 혼합하여 사용하고, 주기적으로 변경하여 사용하도록 해야 한다. 코드예제 사용자가 입력한 패스워드에 대한 복잡도 검증 없이 가입 승인 처리를 수행하고 있다. 안전하지 않은 코드의 예 fr..
■ 보안기능 보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점으로 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 포함된다. 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출 ■ 개요 대부분의 웹 응용프로그램에서 쿠키는 메모리에 상주하며, 브라우저의 실행이 종료되면 사라진다. 프로그래머가 원하는 경우, 브라우저 세션에 관계없이 지속적으로 저장되도록 설정할 수 있으며, 이것은 디스크에 기록되고, 다음 브라우저 세션이 시작되었을 때 메모리에 로드 된다. 개인정보, 인증 정보 등이 이와 같은 영속적인 쿠키(Persistent Cookie)에 저장된다면, 공격자는 쿠키에 접근할 수 있는 보다 많은 기회를 가지게 되며, 이는 시스템을 취약하게 만든다...
■ 보안기능 보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점으로 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 포함된다. 적절하지 않은 난수 값 사용 ■ 개요 예측 가능한 난수를 사용하는 것은 시스템에 보안약점을 유발한다. 예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하다. ■ 안전한 코딩 기법 난수 발생기에서 시드(Seed)를 사용하는 경우에는 고정된 값을 사용하지 않고 예측하기 어려운 방법으로 생성된 값을 사용한다. python에서 random 모듈은 주로 보안목적이 아닌 게임, 퀴즈 및 시뮬레이션을 위해 설계되었다. 세션 ID, 암호화키..
■ 보안기능 보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점으로 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 포함된다. 반복된 인증시도 제한 기능 부재 ■ 개요 일정 시간 내에 여러 번의 인증을 시도하여도 계정 잠금 또는 추가 인증 방법 등의 충분한 조치가 수행되지 않는 경우, 공격자는 성공할법한 ID와 비밀번호들을 사전(Dictionary)으로 만들고 무차별 대입 (brute-force)하여 로그인 성공 및 권한 획득이 가능하다. Django는 사용자 인증 요청 횟수에 대해 제어하지 않는다. 인증 시스템에 대한 무차별 대입 공격으로부터 보호하기 위해 Django 플러그인(django-defender) 또는 웹 서버 모듈을 사용하여 요청을..