반응형

소프트웨어 개발이 복잡해짐에 따라 라이선스 및 저작권 정보 관리의 중요성이 커지고 있습니다.

이러한 상황에 대응하는 설루션으로 SPDX(Software Package Data Exchange)가 등장했습니다.
오늘은 SPDX의 정의, 역사, 작동 방식 등에 대해 알아보고,
이를 활용함으로써 어떻게 개발자와 조직이 이점을 얻을 수 있을까요?

 

SPDX란 무엇인가?

 

SPDX(Software Package Data Exchange)는 2010년에 Linux Foundation이 시작한 프로젝트로,
소프트웨어 패키지의 라이선스 및 저작권 정보를 표준화하고 공유하는 포맷입니다.

소프트웨어 개발과 관리에서 라이선스 정보의 표준화와 관리를 중요하게 다루는 도구인데요,

이 도구는 개발자와 조직이 소프트웨어의 라이선스 준수를 보다 쉽게 관리하고, 

라이선스 정보를 정확하게 이해하고 교환할 수 있도록 도와줍니다. 

SPDX는 라이선스 정보의 표준화뿐만 아니라, 소프트웨어 개발 프로세스의 효율성을 증가시키고, 

라이선스 준수와 저작권 이해도를 높이는 데 기여합니다. 

이는 조직의 품질 관리 체계 향상과 ISO 인증 획득을 위한 가이드라인과 프로세스 충족에도 도움을 줍니다.

SPDX의 목적은 소프트웨어 패키지가 사용하는 다양한 라이선스의 종류와 조건을 명확히 이해하고

간소화하는 것으로 시작했습니다.

이로 인해, 현재는 오픈 소스 커뮤니티뿐만 아니라 소프트웨어 개발의 모든 분야에서

특히 보안 업계에서는 필수적인 요소가 되어가고 있습니다.

SPDX의 기능과 장점

 

SPDX는 다음과 같은 중요한 기능과 장점을 가지고 있습니다

라이선스 리스트 제공
SPDX는 SPDX 라이선스 리스트라고 하는 표준 라이선스 식별자를 정의하고 관리합니다.
이 리스트는 수백 가지 이상의 오픈 소스 라이선스와 예외 사항들을 포함하고 있습니다.
각각의 라이선스와 예외에 대해 고유한 식별자, 표준 텍스트, 그리고 해당 라이선스를 참조하기 위한 URL을 제공합니다.
라이선스 정보의 표준화
SPDX는 각 소프트웨어 컴포넌트가 사용하는 라이선스 정보를 표준화하여 제공합니다.
이 정보는 컴퓨터가 읽을 수 있는 형태로 제공되므로, 개발자와 조직은 소프트웨어의 라이선스 준수 상태를 쉽게 확인할 수 있습니다.
라이선스 준수 간소화
SPDX를 사용하면 개발자와 조직은 패키지가 사용하는 다양한 라이선스의 종류와 조건을 정확하게 이해하고 준수할 수 있습니다.
이는 소프트웨어 라이선스에 대한 이해를 돕고, 라이선스 위반의 위험을 줄여줍니다.

또한, SPDX는 CycloneDX와 함께 소프트웨어 빌 오브 머티리얼(SBOM) 생성에 있어 핵심적인 기술로 자리매김하고 있습니다. 

이러한 기술들은 특히 보안 업계에서 필수적인 요소로 간주되며, 

개발자와 조직이 소프트웨어의 안전성과 투명성을 보장하는 데 중요한 역할을 합니다.

Json과 XML에 대해 아직 모르신다면 아래 쉽게 설명해놨으니 참고해주세요

https://jdcyber.tistory.com/42

 

JSON 이란? (효율적인 데이터 교환의 핵심)

JSON, 이 단어를 들어본 적이 있으신가요? 오늘은 웹 개발 및 데이터 전송에 있어 매우 중요하고 유용한 JSON 파일에 대해 알아보는 시간을 갖도록 하겠습니다. JSON은 데이터 교환을 가능하게 하는

jdcyber.tistory.com

https://jdcyber.tistory.com/41

 

XML이란? (데이터 통신의 보편적 언어)

안녕하세요! 오늘은 데이터 통신 및 교환에 있어 전문적이며 보편적인 언어인 XML에 대해 알아볼까 합니다. 쉽게 말해, XML은 데이터를 공유하고 전송하는 데 도움을 주는 언어로 생각하시면 됩니

jdcyber.tistory.com

SPDX의 작동 방식

 

SPDX 문서는 소프트웨어 패키지의 메타데이터를 기록하는 데 사용됩니다.

이 메타데이터에는 패키지의 이름, 버전, 제작자, 다운로드 위치 등이 포함되어 있습니다.

또한, 각 파일이 사용하는 라이선스, 해당 라이선스의 텍스트, 그리고 파일의 저작권 공지사항도 포함되어 있습니다.

라이선스 정보는 SPDX 라이선스 리스트에서 정의한 라이선스 식별자를 사용하여 기록됩니다.

이 식별자를 사용하면,

소프트웨어 패키지의 사용자와 개발자들은 패키지가 사용하는 라이선스의 종류와 조건을 정확하게 이해할 수 있습니다.

 

정리

 

SPDX는 소프트웨어 라이선스 정보의 표준화와 교환을 돕는 중요한 도구입니다.

SPDX는 라이선스 정보 관리를 표준화함으로써 ISO 인증과 연계해 조직의 품질 관리 체계 향상에 기여할 수 있습니다.

SPDX를 활용하면, 소프트웨어 개발 프로세스의 일관성과 효율성을 증가시키고,

개발자와 조직의 라이선스 준수 및 저작권 이해도를 높일 수 있습니다.

이를 통해 ISO 인증 획득의 요건으로 제시되는 가이드라인과 프로세스를 충족시키는 데 도움이 됩니다.

 

즉, 소프트웨어 개발에서 사용되는 '라이선스 정보 교환 방법'이라고 할 수 있습니다.

마치 식품의 영양 정보표처럼, 소프트웨어가 어떤 규칙(라이선스)을 따르는지 쉽게 알려주고,

이를 통해 개발자들은 소프트웨어를 만들고 사용할 때, 필요한 규칙을 잘 지키고 있는지 확인할 수 있게 됩니다.

SPDX는 CycloneDX와 더불어 SBOM 생성에 있어 핵심 기술 중 하나임은 틀림없습니다.

아직 이렇다 할 규정이 없는 상황에서 위 두 가지는 꼭 가지고 가야 할 주제로 자리하고 있습니다.

 

CycloneDX에 관한 내용은 이전 글에서 충분히 다루었으니 궁금하신 분들은 아래 글을 참고해 주세요

https://jdcyber.tistory.com/35

 

CycloneDX 란? 보안의 미래를 이끄는 힘 SBOM을 통한 소프트웨어 보안의 새로운 지평

CycloneDX란 무엇일까요? 소프트웨어 구성 요소를 한눈에 관리하는 새로운 표준 소프트웨어 개발 프로세스에서 빠질 수 없는 요소 중 하나는 구성 요소의 관리일 것입니다. 라이브러리, 프레임워

jdcyber.tistory.com

 

위에 언급된 SBOM에 대한 내용은 아래 자세히 기술해 놨으니 확인해봐 주세요

https://jdcyber.tistory.com/4

 


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

John the Ripper

 

1996년에 처음 공개된

존더리퍼(John the Ripper, JtR)

본래 유닉스 기반 시스템을 위해 개발된 비밀번호 크래킹 도구입니다.

사전 공격(Dictionary Attack)을 통해 비밀번호 강도를 테스트하고

암호화된(해시된) 비밀번호를 무차별 대입(brute-force) 공격하여 비밀번호를 크래킹 하기 위해 고안됐습니다.

비밀번호 크래킹 속도를 높이기 위한 다양한 모드 제공하고,

암호화된 비밀번호가 사용하는 해싱 알고리즘 자동 탐지,

손쉬운 도구 구동 및 구성 등이 포함되어 있어 초보자와 전문가 모두 연습이 가능한 비밀번호 크래킹 도구입니다.
하지만 JtR은 악의적인 해킹 목적보다는 보안 전문가들이 시스템의 약점을 찾고 강화하는 데 사용하는 교육 도구로 더 널리 인식됩니다.

보안 연습을 위한 실습 도구로서 그 가치가 높히 평가됩니다.


설치

 

아래 코드를 이용하여 깃에 접속해 존더리퍼를 손쉽게 설치할 수 있으며,

git clone "https://github.com/magnumripper/JohnTheRipper.git" && cd JohnTheRipper/src && ./configure && sudo make -s clean && sudo make -sj4

 

아래 코드를 이용하여 Zip 파일을 풀고 비밀번호 해제를 진행합니다.

cd JohnTheRipper/run ./zip2john [filename.zip] > hash.txt ./john hash.txt

 

아래 사이트에서는 직접 자신에게 맞는

OS 별 환경에 맞게 다운로드하고 설정할 수 있습니다.

https://www.openwall.com/john/

 

John the Ripper password cracker

John the Ripper password cracker John the Ripper is an Open Source password security auditing and password recovery tool available for many operating systems. John the Ripper jumbo supports hundreds of hash and cipher types, including for: user passwords o

www.openwall.com


일반적으로 비밀번호 크래커와 같은 도구는

3가지 방식으로 동작합니다.

 

사전 공격 (Dictionary Attack)

무차별 대입 (brute-force)

레인보우 테이블 (Rainbow tables)

 

전수 지수 공격 무작위 대입 공격이며

(모든 문자 및 숫자를 대입하는 방식)

사전 대입 공격은 관련성 있는 문자 및 숫자를 먼저 대입하는 방식입니다


사전 공격

사전 공격 사전에 입력된 수많은 단어와 구문,

이전에 유출된 데이터에서 가능성 있는 비밀번호 목록으로 로그인을 시도합니다.

이 도구는 올바른 비밀번호를 찾기 위해 애플리케이션 목록의 모든 단어를 입력합니다.
일반적으로 간단한 비밀번호에 효과적이지만,

복잡하고 무작위적인 비밀번호에는 덜 효과적입니다.

이 방법은 보안 수준이 낮은 시스템을 빠르게 크래킹 하는 데 유용하지만,

강력한 비밀번호에 대해서는 시간이 오래 걸릴 수 있습니다.


무차별 대입 공격

무차별 대입 공격은 사용자에게 아래와 같이 몇 가지 규칙을 구성하도록 요청합니다.

올바른 비밀번호의 최소 길이와 최대 길이,

구성될 가능성이 있는 글자 유형

(문자, 문자+숫자, 특수 문자 등)

위치 (알파벳 몇 개, 특수 문자 몇 개, 비밀번호 총 길이 등의 규칙)

이상적인 대입 구성을 찾기 위해서는 약간의 추측과 전문 지식이 필요합니다.

그리고 범위 안에서 기준에 따라 가능한 모든 비밀번호 조합을 추측하고,

올바른 비밀번호를 찾아내면 사용자에게 알려주도록 고안되어 있습니다.

이 방법은 매우 효과적인 방법이지만 속도가 매우 느립니다.

예를 들어, 대소문자와 함께 숫자와 특수 문자가 혼합된 9자리 비밀번호는

컴퓨터가 추측하는 데 9년 이상이 소요되기 때문에 실제로는 크래킹이 불가능합니다.

그래서 보안 전문가들이 항상 다양한 문자 유형의 조합으로 구성된 길고 복잡한 비밀번호를 선택하라고 제안하는 것이죠


레인보우 테이블(Rainbow tables)

 

업무에 필수적이고 보안 지향적인 애플리케이션은

비밀번호를 평문으로 저장하는 경우가 거의 없고 길이가 고정된 해시를 저장하고 있습니다.

때문에 유출된 데이터 등으로부터 얻은 해시화된 비밀번호 목록의 경우에 레인보우 테이블이 더욱 효율적일 수 있습니다.

우선 사전에 연산된 비밀번호 해시 목록을 기존의 데이터와 비교해 평문 형식의 올바른 비밀번호를 찾습니다.

해시된 데이터가 미리 계산되기 때문에 레인보우 테이블을 사용하는 것이

무차별 대입보다 속도 적으로 훨씬 빠릅니다.

레인보우 테이블은 비밀번호 해시가 솔팅(Salting) 되어 있고 솔트 값이 너무 커서

비밀번호의 전체적인 복잡성이 증가할 때는 효과적이지 못합니다.

그래서 해시된 사용자 비밀번호를 데이터베이스에 저장하는 것 외에

솔팅을 보안 방어책으로 사용하는 것입니다.

솔팅을 제대로 적용하면 비밀번호 데이터베이스가 유출되더라도

실제로 해커가 사용자 비밀번호를 본래의 평문 형식으로 되돌리는 것이 불가능하기 때문입니다.

솔팅과 해시 평문 등 어려운 단어로 알아듣지

못하시더라도 지금은 괜찮습니다.

추후 제가 설명 글을 작성해 드리도록 하겠습니다.

해당 방법은 보안을 위한 연습만 하시길 바라며

악의적인 해킹은 절대 삼가 주시기 바랍니다.


궁금하신 사항은 댓글에 남겨주세요
댓글에 남겨주신 내용은
추후 정리해서 올려드리겠습니다
이웃 신청하시면 업로드 시 알려드릴게요!
-
조금이라도 도움이 되셨다면
공감&댓글 부탁드리겠습니다
감사합니다!

반응형
반응형

 

오늘은 해킹 기법 중 하나인 SQL Injection에 대해 알아보겠습니다.

시작하기에 앞서 아직 SQL이 무엇인지,

Query (쿼리)가 무엇인지 모르신다면

아래 글을 먼저 읽고 와주시길 바랍니다.

(작성 중)


SQL Injection?

 

SQL은 DB에서 사용하는 프로그래밍 언어이며

Injection 이란 무언가를 주입/주사할 때사용하는 단어로써

SQL Injection은 프로그래밍 언어를 주입하는 해킹 기법입니다.

해커는 보안상의 취약점을 이용하여 대상에게 임의의 SQL 문을 주입하여 실행되게 하고

DB를 공격하는 기법으로 데이터 베이스가 비정상적으로 동작하게 합니다.

인젝션 공격은 OWASP Top10 중 첫 번째 속해 있으며,

공격이 비교적 쉬운 편이고 공격에 성공할 경우

큰 피해를 입힐 수 있는 위험한 공격으로

보안 위협 1순위에 속하는 공격입니다.

SQL Injection 관련 취약점이 존재하면

웹서버의 정보가 모두 털릴 수 있을 정도로

아주 치명적입니다.

2017년 3월에 일어난 “여기어때” 의 대규모 개인정보 유출 사건도 SQL Injection으로피해가 발생하였었죠.

Owasp란?

OWASP는

‘Open Web Application Security Project’의 약자로 비영리 보안 프로젝트 재단을 통칭합니다.

이곳은 SW 보안 향상을 목적으로 운영되는 국제 웹 보안 표준 기구로서

애플리케이션에서 발생할 수 있는 취약점을 분석하고 연구하고 있는데요,

웹 애플리케이션 보안의 위협이 되는 취약점을 TOP 10으로 뽑아 만들고 대비할 수 있도록 알려줍니다.


SQL 인젝션 공격 기법

(대표적인 3가지)

Error Based SQL 인젝션

인증 우회(AB:Auth Bypass)

에러 기반 SQL Injection입니다.입니다.

에러를 이용한 공격 기법으로, 고의로 SQL 문에 에러를 발생시키는 기법으로

에러 메시지를 통해 쿼리문의 구성을 추측하고 DB의 테이블명, 칼럼명, 데이터 내용까지도 알아낼 수 있습니다.

보통 Users 테이블에 있는 모든 정보를 조회하게 됨으로 써

가장 먼저 만들어진 계정으로 로그인에 성공하게 됩니다.

보통은 관리자 계정을 맨 처음 만들기 때문에

관리자 계정에 로그인하여 막대한 2차 피해가 생기는 공격입니다.


Unipon Based SQL 인젝션

데이터 노출(DD:Data Disclosure)

Union 쿼리를 사용한 공격 기법으로 2가지

쿼리를 결합해 정보를 알아낼 때 사용하는 기법으로

공격에 성공하기 위해선 쿼리 두 개의 칼럼 수와 데이터 형이 같아야 한다는 조건이 있습니다.

데이터를 입력하여 참 거짓 값을 알아내고

쿼리 분석기로 칼럼 수를 파악한 후 계정을 열람할 수 있도록 SQL Injection 구문을 작성하여 공격하고,

테이블 열람 구문을 입력하여 모든 사용자의 테이블을 열람할 수도 있습니다.


Blind SQL 인젝션

(Boolean Based SQL, Time Based SQL)

에러 메시지가 발생하지 않는 경우 주로 사용하는 기법으로

특정 쿼리문으로 인한 결과가 참/거짓인 것 만 알 수 있을 때 사용합니다.

예를 들어 어딘가에 로그인을 성공하면 참, 실패하면 거짓 같은 결과를 알 수 있을 때

임의의 SQL 구문을 삽입하여 인가되지 않은 데이터를 열람하고 공격합니다

이러한 특징 때문에 이용하여 주로 데이터 노출을 위해 사용되며,

우편번호 찾기나, 게시판과 같이 데이터를 쉽게 확인할 수 있는 곳에서도 주로 사용됩니다.

요즘은 에러 메시지를 출력하지 않게 웹서버를 구축하고 있어서 웬만한 SQL 공격은 Blind sql 공격으로 진행됩니다


자세한 해킹 방법은 가상 환경을 구축하여

모의 해킹을 통해 알려드리도록 하겠습니다.

https://jdcyber.tistory.com/7

 

버츄얼박스 (VirtualBox)와 칼리 리눅스 (Kali Linux)를 이용한 모의해킹 실습 환경 구축 가이드

오늘은 모의해킹 실습 환경을 구축하는 방법에 대해 소개하려고 합니다. 이번 글에서는 VirtualBox와 칼리 리눅스(Kali Linux)를 사용합니다. 1. VirtualBox 설치 먼저, VirtualBox를 설치해야 합니다. 우리가

jdcyber.tistory.com

Sql 인젝션을 대비하고 보안하는 방법은

아래 글을 참고해 주세요!

(작성 중)

오늘은 SQL 구문을 이용한 해킹 기법인

SQL Injection에 대해 알아봤습니다.

해당 방법은 보안을 위한 연습만 하시길 바라며

악의적인 해킹은 절대 삼가 주시기 바랍니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

이웃 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

 

소스코드 분석과 바이너리 분석이란 무엇인가요?

일반적으로 우리가 프로그래밍 언어를 공부하거나 해킹, 보안 등을 공부하다 보면 자주 접하게 되는 용어 중 하나가 분석입니다.

이때 말하는 분석이라는 단어는 여러 가지 의미를 내포하고 있지만,

주로 어떤 프로그램 코드나 데이터 구조 등을 해석하거나 이해하는 행위를 말합니다.

그리고 이러한 분석 작업을 수행하기 위해서는 해당 분야에 대한 전문 지식이 요구됩니다.

즉, IT 업계에 종사하시는 분들에게 분석 능력은 필수적인 요소라고 할 수 있습니다.

크게 분석 방법에는 소스코드 분석과 바이너리 분석이 존재하는데

이번 글에서 위 두 분석 방법에대해 설명드리고자 합니다.


 

Ai 인공지능 ChatGPT에게 소스코드 분석과 바이너리 분석이 어떤 것인지 질의를 해보도록 합시다.

소스코드 분석

  • 정의: 소프트웨어의 원본 코드를 검토하고 분석하는 과정입니다.
  • 목적: 코드의 이해, 품질 향상, 효율성 증가, 보안 강화.
  • 한계: 제3자 라이브러리나 배포 단계에서의 취약점 탐지에 한계가 있습니다.

바이너리 분석

  • 정의: 컴파일된 소프트웨어의 바이너리 형태를 검토하고 분석하는 과정입니다.
  • 목적: 소스 코드에 의존하지 않고 실행 가능한 프로그램의 보안 문제 및 취약점 찾기.
  • 범위: 소프트웨어 전체, 운영 체제 취약점, 바이너리 레벨 하드웨어 구성 등을 포함합니다.

 

바이너리 분석과 소스코드 분석은 뭐가 다른건가요?


소스코드 분석

소스코드 분석은 소프트웨어 원본 코드를 검토하고 분석하는 과정으로, 개발자가 작성한 코드의 이해, 품질 향상, 효율성 향상 및 보안 목적으로 사용됩니다. 코드 기능, 비즈니스 로직, 변수 및 데이터 사용, 조건 및 반복문 등 전체 코드 구조를 이해하는데 도움이 됩니다.

탐지 범위

소스코드 분석은 원본 코드에 대한 보안 위협, 코드 품질 문제 및 코드 최적화를 찾는 데 도움이 됩니다. 그러나 제 3자 라이브러리 및 배포 단계에서 발생하는 취약점은 이러한 분석으로 찾기 어렵습니다.

 

바이너리 분석

바이너리 분석은 컴파일된 소프트웨어의 바이너리 형태(즉, 기계에서 실행되는 형태)를 검토하고 분석하는 과정입니다. 소스 코드에 의존하지 않고, 컴파일된 프로그램에서 직접 작동 원리, 깨지지 코드, 취약점 및 보안 문제를 찾을 수 있습니다.

 

탐지 범위

바이너리 분석은 컴파일된 프로그램 전체를 포함하여 문제를 찾기 위해 소프트웨어의 모든 부분을 다룹니다. 운영 체제의 취약점, 바이너리 레벨 하드웨어 구성 및 프레임워크와 스크립트와 같은 컴파일 후 추가되는 요소의 보안 위협을 감지할 수 있습니다.

소스코드 분석을 하는 이유


보통 대부분의 프로젝트 진행 시 설계 단계에서부터 소스코드 분석을 고려하게 됩니다.

왜냐하면 소스코드 분석을 통해서 문제 발생 지점을 미리 예측하고 효율적인 해결책을 제시할 수 있기 때문입니다.

예를 들어 다음과 같은 상황을 가정해봅시다.

“A라는 클래스 모듈안에 B라는 메서드가 있고, A클래스 객체 생성 후 B메서드를 호출하면 C라는 결과 값이 반환된다.”

class A:
    def B(self):
        return "C"

# A 클래스의 객체 생성
a_instance = A()

# B 메소드 호출 후 결과값 저장
result = a_instance.B()

# 결과값 출력
print(result)  # 출력: C

만약 위와 같은 형태의 간단한 코드로 구성된 프로그램이라면 누구나 쉽게 수정해서 원하는 결과를 얻을 수 있습니다.

하지만 만약 “A라는 클래스 모듈안에 B라는 메서드가 있고, A클래스 객체 생성 후 B메서드를 호출하면 C라는 결과 값이 반환된다.”라는 문장이 수십 개 이상 반복되는 복잡한 알고리즘을 가진 프로그램이라면 어떨까요?

이럴 경우 각 메소드마다 일일이 주석을 달아주는 것은 매우 비효율적이며, 자칫 잘못하면 오류가 발생할 확률이 높습니다.

그렇기 때문에 처음부터 모든 메서드에 대한 자세한 주석을 달기보다는

전체적인 흐름을 파악하며 큰 그림을 그리는 것이 좋습니다.

이를 위해 우선 현재 상태를 점검해야 하는데, 이때 유용하게 사용될 수 있는 도구가 바로 소스코드 분석입니다.

 

바이너리 분석을 하는 이유

 

바이너리 분석은 소프트웨어 개발 및 보안 분야에서 매우 중요한 역할을 합니다. 이는 특히 소스코드가 직접적으로 사용할 수 없거나, 컴파일 후의 프로그램 동작을 이해하고 검증해야 할 때 필요합니다.

 

바이너리 분석은 컴파일된, 즉 실행 가능한 형태의 프로그램을 분석하는 과정입니다. 이 과정은 특히 다음과 같은 상황에서 중요합니다

소스코드 접근 불가: 때때로, 특히 공개되지 않은 소프트웨어나 써드파티 제품을 다룰 때, 소스코드에 접근할 수 없습니다. 이럴 때 바이너리 분석을 통해 소프트웨어의 작동 방식을 이해하고 문제점을 찾을 수 있습니다.
컴파일 과정 중 문제 발견: 컴파일 과정은 소스코드를 실행 가능한 형태로 변환합니다. 이 과정에서 추가적인 최적화나 변경이 일어날 수 있으며, 이로 인해 새로운 취약점이나 버그가 발생할 수 있습니다. 바이너리 분석을 통해 이러한 문제를 탐지할 수 있습니다.
보안 취약점 탐지: 특히 해킹이나 보안 분야에서, 바이너리 분석은 소프트웨어의 보안 취약점을 찾는 데 중요합니다. 컴파일된 프로그램에서 직접적으로 취약점을 찾아내어 공격 가능성을 평가할 수 있습니다.
리버스 엔지니어링: 때때로, 특정 소프트웨어의 기능을 이해하거나 호환성을 확보하기 위해 리버스 엔지니어링이 필요할 수 있습니다. 바이너리 분석은 이 과정에서 핵심적인 역할을 합니다.

앞서 말씀드린 바와 같이 소스코드 분석은 반드시 거쳐야 하는 과정이지만,

그렇다고 해서 소스코드 분석만으로 모든 문제점을 찾아낼 수 있는 것은 아닙니다.

특히 규모가 크고 복잡한 프로그램일수록 소스코드 분석만으로는 한계가 생길 수밖에 없습니다.

그렇다면 어떻게 해야 할까요? 정답은 바로 ‘다른 분석 방법’을 병행하는 것입니다.

대표적인 예가 바로 디버깅입니다.

하지만 이번 시간에는 소스코드 분석과 바이너리 분석에 대해서만 살펴보겠습니다.

물론 둘 다 좋은 분석 방법이지만,

각각의 장단점이 명확하므로 목적에 맞게 적절히 활용한다면 더욱 효과적으로 업무를 수행할 수 있을 것입니다.

우리 모두 안전하고 깨끗한 보안을 이루어갑시다!


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

제로트러스트
아무것도 믿지말고 항상 검증하라

제로트러스트 Zero Trust

"아무것도 신뢰하지 마라"

 

제로 트러스트(Zero Trust)는 현대 IT 보안 분야에서 중요한 개념으로,

"아무것도 신뢰하지 마라"는 원칙을 가지고 있습니다.

이는 인터넷상에서 정보를 주고받는 모든 행위에 대해 근본적으로 의심하고,

모든 접근을 검증하는 보안 접근 방식을 말합니다.

 

예를 들어, 크x 브라우저, 카카x 메신저, 알x 백신 등의 소프트웨어를 다운로드하고 사용할 때,

제로 트러스트 접근법은 이러한 애플리케이션들이 안전하다고 가정하지 않고,

그들의 보안 수준을 지속적으로 검증하고 모니터링하는 것을 의미합니다.


제로 트러스트의 등장 배경

 

전통적인 보안 모델은 내부 네트워크를 신뢰하고 외부를 불신하는 방식으로 구성되어 있었습니다.

이 모델은 방화벽과 가상 사설망(VPN)을 중심으로 하여,

내부 네트워크에 대한 접근을 기본적으로 신뢰했습니다.

하지만 클라우드 컴퓨팅, 모바일 장치, IoT 기기의 대중화로 인해

보안 환경이 변화하면서 이러한 전통적인 접근 방식의 한계가 드러났습니다.

제로 트러스트 모델은 이러한 변화에 대응하여 등장했습니다.

 


제로 트러스트의 핵심 원칙

  1. 최소 권한 (Least Privilege): 사용자는 필요한 최소한의 권한만을 부여받으며, 이를 통해 잠재적인 위협으로부터의 공격을 방지합니다.
  2. 인증 및 접근 제어 (Authentication and Access Control): 모든 사용자와 장치는 인증을 거쳐야 하며, 식별과 권한 검증이 이루어집니다.
  3. 네트워크 분할 (Network Segmentation): 네트워크는 보안 영역으로 세분화되며, 각 영역은 다른 영역과 격리됩니다.
  4. 다중 요인 인증 (Multi-Factor Authentication): 단일 인증 요소만으로는 부족하므로, 추가적인 보안 계층을 위해 다중 요인 인증을 사용합니다.
  5. 이상 징후 감지 (Anomaly Detection): 사용자 및 장치의 행위를 지속적으로 모니터링하여 이상 징후를 감지합니다.
  6. 암호화 (Encryption): 데이터의 안전한 전송과 저장을 위해 암호화를 사용합니다.

 

기존의 보안체제와 제로트러스트 보안의 차이점

구분 제로트러스트 보안 기존 보안 모델
신뢰 원칙 내부 및 외부 네트워크 모두를 기본적으로 불신 내부 네트워크를 신뢰하고 외부를 불신
접근 제어 지속적인 인증과 권한 검증 필요 일단 인증되면 네트워크 내부 자원에 대한 접근이 허용
네트워크 보안 네트워크 전체에 걸쳐 일관된 보안 정책 적용 주로 네트워크 경계에 중점을 둔 보안
인증 방법 다중 요인 인증(MFA) 및 동적 권한 부여 단일 요인 인증(예: 비밀번호)
보안 전략 최소 권한 원칙 및 지속적인 모니터링 전통적인 방어벽 및 안티바이러스에 의존
데이터 보호 모든 데이터 전송 및 저장에 대한 암호화 주로 중요한 데이터에만 암호화 적용
투명성 및 통제 높은 수준의 투명성 및 사용자 행동 분석 제한적인 통제 및 투명성
적응성 클라우드, 모바일, IoT 등 다양한 환경에 유연 주로 고정된 IT 환경에 적합
위협 대응 실시간 위협 탐지 및 대응 주로 과거의 위협 패턴에 기반한 대응

 


미국의 제로트러스트 보안 가이드라인

 

사이버보안 및 인프라보안국(CISA)은

2023년 4월 제로 트러스트 성숙도 모델(Zero Trust Maturity Model, ZTMM)의 업데이트 버전을 발표했습니다.

이 업데이트된 모델은 연방 기관들이 제로 트러스트 아키텍처로 전환하기 위한 종합적인 로드맵을 제공하며,

다섯 가지 주요 영역에 걸쳐 구현 지침을 제공합니다. 이 모델은 연방 기관뿐만 아니라

주, 지방, 부족, 영토 정부 및 민간 부문에서도 사용할 것을 권장합니다.

모델의 목적은 기관들이 시간이 지남에 따라 제로 트러스트 아키텍처의 최적화를 향해

소규모 개선을 할 수 있도록 하는 것입니다.

업데이트된 ZTMM의 핵심 초점은 데이터, 네트워크, 인프라에 대한 접근을 최소한으로 유지하고

그 접근의 정당성을 지속적으로 검증하는 것입니다.

새로운 성숙도 모델은 "초기(Initial)" 단계를 도입하고

전체적으로 네 단계의 성숙도(전통적, 초기, 고급, 최적)를 포함합니다.

각 단계에서 CISA는 제로 트러스트 아키텍처 구현을 위한 계획 및 결정을 고려할 때

고려해야 할 여러 새로운 기능을 추가하고 기존 기능을 업데이트했습니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형

+ Recent posts