티스토리

criling
검색하기

블로그 홈

criling

criling.tistory.com/m

criling 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • 머신러닝을 활용한 악성코드 분석 - 악성코드 분석(동적 방법 - 행위 분석 - 2) 머신러닝을 활용한 악성코드 분석 - 악성코드 분석(동적 방법 - 행위 분석 - 1) https://criling.tistory.com/77 * 실행 중에 애플리케이션이 만드는 시스템 호출(syscall) 시퀀스는 악성코드 분류에 있어 중요한 속성입니다. syscall을 추적하는 몇 가지 다른 방법이 있지만 가장 많이 쓰이고 직접적인 방법은 가장 최신의 안드로이드 배포판에 포함된 *strace 모듈을 사용하는 것입니다. adb와 에뮬레이터를 사용해 애플리케이션의 syscall을 추출하는 방법을 간단히 살펴 보겠습니다. 안드로이드 애플리케이션은 Zygote 데몬 앱 런처 프로세스를 포크해서 시작됩니다. 주 프로세스의 맨 처음부터 애플리케이션의 syscall을 추적하기를 원하기 때문에 Zygote에서 stra.. 공감수 0 댓글수 0 2022. 3. 21.
  • 안드로이드 스튜디오 설치(우분투) 우분투 환경 필요한 AVD 환경 안드로이드 4.4 x86 OS Nexus 5(4.95 1080x1920 xxhdpi) 과정 1. 안드로이드 스튜디오 파일 다운로드 https://developer.android.com/studio Download Android Studio and SDK tools | Android Developers Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more. developer.android.com 2. sudo apt-get install libz1 libncurses5 libbz2-1.0:amd64 libstdc.. 공감수 0 댓글수 0 2022. 3. 14.
  • 머신러닝을 활용한 악성코드 분석 - 악성코드 분석(동적 방법 - 행위 분석) 안드로이드 애플리케이션의 메타데이터를 보는 구조 분석은 소프트웨어가 실제로 하는 일에 대해 매우 제한된 시각으로 바라보는 것이다. 정적 분석은 이론적으로는 완전한 코드 커버리지를 통해 악의적인 행위를 발견할 수있지만 때로는 크고 복잡한 애플리케이션을 처리할 때 비현실적으로 높은 리소스 비용이 발생한다. 또한 정적 분석은 매우 비효율적일 수 있다. 서로 다른 범주의 바이너리(예: 악성코드, 정상/악성)를 구별하는 가장 강력한 속성은 바이너리에서 일부분에 존재하기 때문입니다. 단일 코드 블록을 찾기위해 바이너리 코드 블록 100개를 분석하는 것은 상당한 낭비입니다. 프로그램을 실행하면 풍부한 데이터를 생성할 수 있는 효율적인 방법이 될 수 있습니다. 애플리케이션에서 모든 코드 경로가 실행되지는 않더라도 다른.. 공감수 0 댓글수 0 2022. 2. 23.
  • 머신러닝을 활용한 악성코드 분석 - 악성코드 분석(정적 방법 - 정적 분석) 실습환경 정적 분석 [그림 2]를 통해 앞선 정적 분석에서 apktool을 사용해 infected.apk 파일을 디코드 할 때 "Baksmaling classes.dex..."가 출력된 것을 확인할 수 있습니다 dex 파일은 안드로이드 애플리케이션의 컴파일된 바이트 코드로 *Dalvik 가상 머신에서 실행됩니다. *Dalvik 달빅 가상 머신은 레지스터 형태의 가상머신으로 현재 안드로이드 휴대 전화 플랫폼에 들어갑니다. 대부분의 APK에서 컴파일된 바이트코드는 classes.dex 파일에 통합됩니다. Baksmali는 .dex 형식(smali는 해당 어셈블러의 이름)의 역어셈블러입니다. 이 역어셈블러는 통합 dex 파일을 사람이 읽을 수 있도록 *smali 소스코드로 변환합니다. apktool 디코드를 .. 공감수 0 댓글수 0 2022. 2. 8.
  • 머신러닝을 활용한 악성코드 분석 - 악성코드 분석(정적 방법 - 구조 분석) 실습 환경 구조 분석 안드로이드 애플리케이션은 APK(Android Package Kit)파일 패키지로 제공됩니다. APK 파일은 안드로이드 운영체제에서 사용하기 위한 파일 포맷입니다. 또한 애플리케이션 실행에 필요한 모든 리소스와 메타데이터를 포함하는 ZIP 아카이브 입니다. [그림 2]과 같이 unzip을 사용하여 apk를 압축 해제할 수 있습니다. AndroidManifest.xml *매니페스트 파일은 해당 애플리케이션의 개요를 제공할 수 있습니다. 이러한 매니페스트 파일은 모든 안드로이드 앱에 필요합니다. *매니페스트 파일(manifest file) 컴퓨팅에서 집합의 일부 또는 논리정연한 단위인 파일들의 그룹을 위한 메타데이터를 포함하는 파일입니다. 컴퓨터 프로그램의 파일들은 이름, 버전 번호, .. 공감수 0 댓글수 0 2022. 1. 27.
  • 머신러닝을 활용한 악성코드 분석 - 일반적인 악성코드 공격의 흐름 일반적인 악성코드 공격의 흐름 일반적인 악성코드의 흐름은 다음과 같이 3단계로 구분할 수 있습니다. [정찰 -> 침투] -> [활동 -> 유지/관리] -> [목적 달성 -> 흔적 제거] 각 단계별로 수행되는 활동을 살펴보겠습니다. 1단계: 정찰 -> 침투 간접적인 방법으로 표적 범위를 지정하기 위해 초기 정찰 활동이 수동적인 방법으로 수행됩니다. 취약점을 악용하여 악성코드 침투 2단계: 활동 -> 유지/관리 이미 희생자의 환경에 악성코드 존재 백도어 설치 및 영구적인 백그라운드 데몬 프로세스 설치 등으로 환경 내 자신을 유지 3단계: 목적 달성 -> 흔적 제거 환경에서 악성코드 스스로 흔적을 제거하고 추적을 남기지 않습니다. 작업이 완료되면 악성코드가 제거돼 피해 대상 시스템에서 모든 작업 흔적을 제거합.. 공감수 0 댓글수 0 2022. 1. 24.
  • 머신러닝을 활용한 악성코드 분석 - 파이썬 스크립트 실행 프로세스 간단한 실습을 통해 파이썬 스크립트 실행 프로세스를 분석해보겠습니다. 실습 환경 Ubuntu 16.04.1 LTS python 3.5.2 실습 해당 예제를 이용하여 파이썬 빌드 매커니즘을 탐색해보도록 하겠습니다. 해당 코드는 바이트코드(중간 형식)으로 컴파일 됩니다. 스크립트가 외부 모듈을 가져오고 대상 디렉터리에 쓸 수 있다면 컴파일된 파이썬 모듈(.pyc)이 생성되지만 위의 경우 외부 모듈을 가져오지 않으므로 .pyc 파일을 만들 수 없습니다. 빌드 프로세스를 검사하기 위해 py_compile 모듈을 사용하여 .pyc 파일을 강제로 생성할 수 있습니다. .pyc 파일에는 바이트코드가 만들어집니다. 이후 파일의 헤더를 제거하고 *언마샬링(비정렬화)하여 types.CodeType 구조로 바이너리 파일의 .. 공감수 0 댓글수 0 2021. 11. 28.
  • 머신러닝을 활용한 악성코드 분석 - 빌드 프로세스 간단한 실습을 통해 컴파일된 빌드 프로세스를 단계별로 진행하는 C코드를 살펴보겠습니다. 실습 환경 Linux kali 5.7.0-kali1-686-pae #1 SMP Debian 5.7.6-1kali2 (2020-07-01) i686 GNU/Linux gcc (Debian 9.3.0-15) 9.3.0 실습 1. 전처리 이 단계는 전처리 단계입니다. C에서 #문자로 시작하는 줄은 선행 처리기 지시문으로 전처리기에 의해 해석됩니다. 전처리기는 단순히 코드를 반복하고 이러한 지시문을 매크로로 처리합니다. 포함된 라이브러리의 내용을 삽입하고 코드 주석을 제거해 컴파일할 코드를 준비합니다. [그림 2]를 통해 #include 가 표준 C 라이브러리 stido.h의 일부 내용으로 대체된 것을 알 수 있습니다. 2... 공감수 0 댓글수 0 2021. 11. 19.
  • 머신러닝을 활용한 악성코드 분석 - 악성코드 악성코드 이해 악성코드 분석은 악성 소프트웨어의 기능, 목적, 기원과 잠재적 영향을 연구합니다. 이러한 작업은 전통적으로 매우 수동적이고 어려우며, 소프트웨어 내부와 리버스 엔지니어링에 대한 전문적 지식을 갖춘 분석가가 필요합니다. 데이터 과학과 머신 러닝은 악성코드 분석에 있어 어느 부분 자동화가 가능하다는 점을 보여주고 있지만, 이러한 방법은 데이터에서 의미 있는 속성을 추출하는 데 여전히 많이 의존합니다. 즉, 데이터에서 의미 있는 속성을, 유용한 정보를 의미있게 추출하는 것이 매우 중요하다고 볼 수 있습니다. 원시 데이터는 머신 러닝 알고리즘을 적용하기 전에 데이터 수집, 정제 및 검증을 위한 계획이 필요합니다. 학습 알고리즘에 적용할 최적의 데이터 형식 및 표현을 선택하는 데 이 원시 데이터를 .. 공감수 0 댓글수 0 2021. 11. 4.
  • Naive Bayes(나이브 베이즈) 나이브 베이즈 분류는 특성들 사이의 독립을 가정하는 베이즈 정리를 적용한 확률 분류기의 일종입니다. 나이브 베이즈는 특성 값은 서로 독립임을 가정합니다. 예) 특정 과일을 사과로 분류 가능하게 하는 특성들(둥글다, 빨갛다, 지름 10cm)은 나이브 베이즈 분류기에서 특성들 사이에서 발생할 수 있는 연관성이 없음을 가정하고 각각의 특성들이 특정 과일이 사과일 확률에 독립적으로 기여하는 것으로 간주합니다. (출처 : 위키백과) 베이즈 추론은 다음과 같습니다. 모숫값이 가질 수 있는 모든 가능성의 분포를 계산하는 작업입니다. 통계적 추론의 한 방법이며 추론 대상의 *사전 확률과 추가적인 정보를 통해 해당 대상의 *사후 확률을 추론하는 방법입니다. 베이즈 추론은 베이즈 확률론을 기반으로 하며 이는 추론하는 대상.. 공감수 0 댓글수 0 2021. 10. 31.
  • MinHash와 LSH(Locality Sensitive Hashing) LSH는 두 문서(오디오, 비디오)의 유사도를 측정할 때 활용할 수 있습니다. LSH는 3단계로 나눌 수 있습니다. 1. Shingling 2. MinHashing 3. LSH(Locality-Sensitive Hashing) 1. Shingling 이 단계는 각 문서를 길이가 k인 문자 집합(k-shingles 또는 k-gram이라고도 한다.)으로 변환합니다. 예를 들어 한 문서(D)에 "Casper"이라는 문자열 있을 경우 k가 2라면 다음과 같은 set가 나옵니다. k가 2인 경우 -> {"Ca", "as", "sp", "pe", "er"} k가 3인 경우 -> {"Cas", "asp", "spe", "per"} 이때 유사한 문서의 경우 더 많은 shingle을 공유할 가능성이 높습니다. 또한 만들.. 공감수 0 댓글수 0 2021. 10. 29.
  • 머신러닝을 이용한 스팸메일 필터링(Spam mail filtering with Machine Learning) ※ 본 게시글은 작성자의 개인 공부, 정리 용도로만 작성되었으며, 이를 악용하여 발생한 문제의 책임은 행위자 본인에게 있음을 알립니다. 머신 러닝 알고리즘은 종종 보안을 염두에 두고 설계된 것이 아니기 때문에 공격자들의 공격 시도에 취약한 경우가 많습니다. 따라서 보안을 위한 머신 러닝 시스템을 설계 및 구축할 때 이러한 위협 모델에 대해 인지하고 있어야 합니다. 보안 분야에서 사용하는 머신 러닝의 기술은 패턴 인식(pattern Recognition)과 비정상 탐지(Anomaly Detection) 두 분류로 구분할 수 있습니다. 데이터의 특정 하위 집합에 존재하는 패턴을 학습하지 않고, 주어진 데이터셋의 대부분(가령 약 95% 이상)을 해석할 수 있는 정규성을 찾아내는 것입니다. 이후 이를 벗어나는 .. 공감수 0 댓글수 0 2021. 9. 15.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.