안드로이드 구성 요소 ■ 안드로이드 어플리케이션(APK) 필수 구성 요소 안드로이드 어플리케이션은 어플리케이션 매니페스트 파일에 의해 바인딩된 6가지 필수사항(액티비티(Activity), 서비스(Service), 콘텐츠 프로바이더(Contents Provider), UI, Intent, 브로드캐스트 리시버(BroadCast Receiver)으로 구성됨. ※액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더를 묶어 컴포넌트라고 함 Activity(액티비티) 안드로이드의 클래스 구현될 때, 윈도우나 자바프레임처럼 사용자 인터페이스가 있는 단일 화면을 나타냄. 각 화면은 메뉴를 클릭하거나 버튼을 클릭하는 등과 같은 특정한 액션에 의해 전환되는데, 각 화면이 모두 액티비티. 모든 앱에는 처음 실행될 때 ..
ADB 알아보기 ■ ADB란? ADB(android debug bridge)는 안드로이드 에뮬레이터나 PC에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구이며, 기기와 통신할 수 있는 커맨드라인을 제공하며, 세 가지 구성요소(클라이언트, 데몬, 서버)를 포함. ADB는 안드로이드 SDK 플랫폼 도구 패키지에 포함되어 있으므로, SDK 설치만으로 간편하게 사용 가능. 경로는 안드로이드 하위 폴더인 Android\sdk\platform-tools에 위치함. 특히, 자주 사용하게 될 기능으로 ADB는 쉘 기능을 제공하여 연결된 안드로이드 에뮬레이터나 장치에서 원격 쉘을 사용할 수 있도록 하는 기능을 제공. "adb shell"이라는 명령을 사용. 만약 ADB 서버가 구동되어 있지 않다면, 위와 같은..
모바일 어플리케이션 디컴파일하기 ■ 디컴파일 개요 Android Manifest 앱에 필수로 들어가야되며, 앱에 대한 필수적인 정보를 담고 있음. 특히, 앱의 패키지 이름과 사용되는 컴포넌트 및 권한 등이 전부 담겨 있음 DEX 안드로이드 환경에서의 실행 파일 Java 코드로 작성된 컴파일된 class 파일을 DX 도구를 사용해 변환시킨 파일 - Java 바이트 코드가 달빅 다이트 코드로 변환 달빅 가상머신에서 구동 - 실행되는 앱마다 가상머신을 생성해 구동시킴 SMALI DEX 바이너리를 사람이 읽을 수 있도록 표현. DEX를 디코딩 작업으로 추출할 수 있음. Smali 파일의 코드를 분석해 프로그램의 실행 원리 파악 가능 Smali 코드를 읽고, 수정 후 재컴파일해서 프로그램 수정 가능 (조작하면 동..
안드로이드란?(Android) ■ 안드로이드란 Android는 주로 스마트폰 및 태블릿과 같은 터치스크린 모바일 장치용으로 설계된 Linux 커널 및 기타 오픈 소스 소프트웨어의 수정된 버전을 기반으로 하는 모바일 운영체제이며, Open Handset Alliance로 알려진 개발자 컨소시엄에서 개발하고 구글에서 상업적으로 후원중. 안드로이드 기기의 아키텍처, 애플리케이션이 어떻게 컴파일되는지, 가장 중요한 것은 안드로이드 애플리케이션의 구성을 이해하는 것 ■ 안드로이드의 구성 하드웨어 Android의 주요 하드웨어 플랫폼은 이후 릴리스에서도 지원되는 x86 및 x86-64 아키텍처가 있는 ARM Android 5.0 Lollipop부터 32비트 변형 외에도 모든 플랫폼의 64비트 변형이 지원됨 커널 A..
네트워크 기초 용어 설명 ■ 토큰링(TokenRing)이란? IBM에 의해 개발된 프로토콜 네트워크 상에서 토큰을 가진 PC만이 네트워크에 데이터를 실어 보낼 수 있음 당연히 이러한 방식으로 통신이 이루어지면 네트워크 충돌이 발생하지 않음 다만, 토큰을 보유하고 있어야 데이터를 보낼 수 있다는 점에서, 보낼 데이터가 있다 하더라도 토큰을 가지고 있어야 통신이 가능하다는 점에서 이더넷 통신보다 적게는 25배에서 많게는 100배 가량 속도차이가 나므로, 현재는 거의 사용하지 않는 방식의 통신 프로토콜 ※토큰을 가진 순서에 따라 통신이 일어난다는 점에서 순서가 없이 아무나 통신이 가능한 이더넷과는 방식이 다름 ■ 유니캐스트란?(Unicast) 네트워크 상에서 가장 많이 사용되는 트래픽. 유니캐스트 통신 방식에..
YASCA ■ yasca란? Yasca는 프로그램 소스코드의 보안 취약성, 코드 품질, 성능 및 모범 사례 준수를 찾는 오픈 소스 프로그램입니다. FindBugs, PMD, JLint, 자바스크립트 린트, PPLint, Cppcheck, ClamAV, Pixy, RATS와 같은 외부 오픈 소스 프로그램을 활용하여 특정 파일 형식을 검색하고 야스카용으로 개발된 많은 맞춤형 스캐너를 포함하고 있습니다. HTML, CSV, XML, MySQL, SQLite 및 기타 형식으로 보고서를 생성하는 명령줄 도구입니다. 잘 알려진 OWASP 보안 프로젝트와 미국 국토안보부 웹 사이트의 정부 소프트웨어 보안 도구 검토에도 비활성 프로젝트로 등재되어 있습니다. 소스코드 진단 및 시큐어코딩에 활용할 수 있습니다. 소개시켜드..
CC - 쿠키 변조 ■ 점검내용 쿠키 사용 여부 및 사용하는 경우 안전한 알고리즘으로 암호화 여부 점검 ■ 점검목적 쿠키를 사용하는 경우 안전한 알고리즘으로 암호화하여 공격자가 쿠키 인젝션 등과 같은 쿠키 값 변조를 통한 다른 사용자로의 위장 및 권한 변경을 방지하고자 함 ■ 보안위협 클라이언트에 전달되는 쿠키에 사용자 식별 값이 평문으로 노출될 경우 쿠키 변조를 통해 다른 사용자의 유효한 세션을 취득할 수 있으며, 기타 중요정보의 유출 및 변조 가능함 ■ 참고 ※ 쿠키(Cookie): 인터넷 사용자가 어떠한 웹 사이트를 방문할 경우 그 사이트가 사용하고 있는 서버에서 인터넷 사용자의 컴퓨터에 설치하는 작은 기록 정보 파일 ※ 소스코드 및 취약점 점검 필요 점검대상 및 판단기준 ■ 대상 : 웹 애플리케이..
SN - 데이터 평문 전송 ■ 점검내용 서버와 클라이언트 간 통신 시 데이터의 암호화 여부 점검 ■ 점검목적 서버와 클라이언트 간 통신 시 데이터의 암호화 전송 미흡으로 정보 유출의 위험을 방지하고자 함 ■ 보안위협 웹상의 데이터 통신은 대부분 텍스트 기반으로 이루어지기 때문에 서버와 클라이언트 간에 암호화 프로세스를 구현하지 않으면 간단한 도청(Sniffing)을 통해 정보를 탈취 및 도용할 수 있음 ■ 참고 ※ Sniffing: 스니퍼(sniff: 냄새를 맡다, 코를 킁킁거리다)를 이용하여 네트워크상의 데이터를 도청하는 행위 ※ 소스코드 및 취약점 점검 필요 점검대상 및 판단기준 ■ 대상 : 웹 애플리케이션 소스코드, 웹 서버 양호 중요정보 전송구간에 암호화 통신이 적용된 경우 취약 중요정보 전송구간..
PL - 위치 공개 ■ 점검내용 예측 가능한 폴더의 위치 사용 여부 및 불필요한 파일의 존재 여부 점검 ■ 점검목적 공격자가 폴더의 위치를 예측하여 파일 및 정보 획득을 방지하고자 함 ■ 보안위협 폴더나 파일명의 위치가 예측 가능하여 쉽게 노출될 경우 공격자는 이를 악용하여 대상에 대한 정보를 획득하고 민감한 데이터에 접근 가능 ■ 참고 - 점검대상 및 판단기준 ■ 대상 : 웹 서버 양호 불필요한 파일이 존재하지 않고, 샘플 페이지가 존재하지 않을 경우 취약 불필요한 파일이 존재하거나, 샘플 페이지가 존재하는 경우 ■ 조치방법 웹 루트 디렉터리 이하 모든 불필요한 파일 및 샘플 페이지 삭제 점검 및 조치 방법 ■ 점검방법 Step 1) 웹 루트 디렉터리 내 웹 서비스에 불필요한 확장자(.bak, .bac..
PT - 경로 추적 ■ 점검내용 웹 서버와 웹 애플리케이션의 파일 또는 디렉터리의 접근 통제 여부 점검 ■ 점검목적 웹 서버 또는 웹 애플리케이션의 중요한 파일과 데이터의 접근 및 실행을 방지하고자 함 ■ 보안위협 웹 서버와 웹 애플리케이션의 파일 또는 디렉터리 접근이 통제되지 않아 웹 서버 또는 웹 애플리케이션의 중요한 파일과 데이터에 접근을 허용하는 취약점으로 웹 루트 디렉터리에서 외부의 파일까지 접근하여 이를 실행할 수 있음 ■ 참고 ※ 소스코드 및 취약점 점검 필요 점검대상 및 판단기준 ■ 대상 : 웹 애플리케이션 소스코드, 웹 서버, 웹 방화벽 양호 웹 루트 디렉터리보다 상위 디렉터리(예. /root)에 접근이 불가능한 경우 취약 웹 루트 디렉터리보다 상위 디렉터리에 접근이 가능한 경우 ■ 조치..
AE - 관리자 페이지 노출 ■ 점검내용 유추하기 쉬운 URL로 관리자 페이지 및 메뉴 접근의 가능 여부 점검 ■ 점검목적 관리자 페이지 URL이 유추하기 쉬운 이름(admin, manager 등) 및 웹 사이트 설계 오류를 수정하여 비인가자의 관리자 메뉴 접근을 방지하고자 함 ■ 보안위협 웹 관리자의 권한이 노출될 경우 웹 사이트의 변조뿐만 아니라 취약성 정도에 따라서 웹 서버의 권한까지도 노출될 수 있음 ■ 참고 ※ 소스코드 및 취약점 점검 필요 점검대상 및 판단기준 ■ 대상 : 웹 애플리케이션 소스코드, 웹 서버, 웹 방화벽 양호 유추하기 쉬운 URL로 관리자 페이지 접근이 불가능한 경우 취약 유추하기 쉬운 URL로 관리자 페이지 접근이 가능한 경우 ■ 조치방법 유추하기 어려운 이름(포트 번호 변경..
FD - 파일 다운로드 ■ 점검내용 웹 사이트에서 파일 다운로드 시 허용된 경로 외 다른 경로의 파일 접근이 가능한지 여부 점검 ■ 점검목적 파일 다운로드 시 허용된 경로 외 다른 경로의 파일 접근을 방지하여 공격자가 임의의 위치에 있는 파일을 열람하거나 다운받는 것을 불가능하게 하기 위함 ■ 보안위협 해당 취약점이 존재할 경우 공격자는 파일 다운로드 시 애플리케이션의 파라미터 값을 조작하여 웹 사이트의 중요한 파일(DB 커넥션 파일, 애플리케이션 파일 등) 또는 웹 서버 루트에 있는 중요한 설정 파일(passwd, shadow 등)을 다운받을 수 있음 cgi, jsp, php 등 파일 다운로드 기능을 제공해주는 애플리케이션에서 입력되는 경로를 검증하지 않는 경우 임의의 문자(../.. 등)나 주요 파일..
FU - 파일 업로드 ■ 점검내용 웹 사이트의 게시판, 자료실 등에 조작된 Server Side Script 파일 업로드 및 실행 가능 여부 점검 ■ 점검목적 업로드되는 파일의 확장자에 대한 적절성 여부를 검증하는 로직을 통해 공격자가 조작된 Server Side Script 파일 업로드 방지 및 서버상에 저장된 경로를 유추하여 해당 Server Side Script 파일 실행을 불가능하게 하기 위함 ■ 보안위협 해당 취약점이 존재할 경우 공격자는 조작된 Server Side Script 파일을 서버에 업로드 및 실행하여 시스템 관리자 권한 획득 또는 인접 서버에 대한 침입을 시도할 수 있음 ■ 참고 ※ Server Side Script: 웹에서 사용되는 스크립트 언어 중 서버 측에서 실행되는 스크립트 ..
PV - 프로세스 검증 누락 ■ 점검내용 인증이 필요한 웹 사이트의 중요(관리자 페이지, 회원변경 페이지 등) 페이지에 대한 접근제어 설정 여부 확인 ■ 점검목적 인증이 필요한 모든 페이지에 대해 유효 세션임을 확인하는 프로세스 및 주요 정보 페이지에 접근 요청자의 권한 검증 로직을 적용하여, 비인가자가 하위 URL 직접 접근, 스크립트 조작 등의 방법으로 중요한 페이지에 접근을 시도하는 것을 차단하기 위함 ■ 보안위협 인증이 필요한 웹 사이트의 중요(관리자 페이지, 회원변경 페이지 등) 페이지에 대한 접근 제어가 미흡할 경우 하위 URL 직접 접근, 스크립트 조작 등의 방법으로 중요한 페이지에 대한 접근이 가능함 ■ 참고 ※ 소스코드 및 취약점 점검 필요 점검대상 및 판단기준 ■ 대상 : 웹 애플리케이..