보안
-
안티 드론 기법에 대해보안 2023. 2. 27. 02:21
최근 북한 무인기 사건과 함께 드론에 대한 관심도가 높아지고 있다. 그런 의미에서 드론을 공격하는 행위인 안티드론의 기법들에 대해 정리해보고자 한다. 안티드론 기법의 분류는 크게 3가지로 정리할 수 있다. 1. 물리적 공격 2. 사이버 공격 3. 해킹 순서대로 하나씩 살펴보자. 물리적 공격 물리적 공격은 큰 설명이 필요 없을 것이다. 총으로 쏘거나, 크기가 큰 드론이라면 미사일을 쏘거나, 그물을 이용하는 등 물리적으로 드론의 비행을 방해하는 기법이다. 가장 확실하다고 볼 수 있겠지만 드론이 회피비행을 하거나 속도가 아주 빠르다면 공격이 어려울 수 있다. 사이버 공격 사이버 공격은 드론의 통신을 방해하는 행위 정도로 볼 수 있다. 대표적으로는 재밍과 스푸핑이 있는데, 재밍은 아주 센 주파수를 쏴 드론과 조..
-
MITRE ATT&CK 프레임워크에 대해보안 2023. 2. 13. 04:27
Cybertech Tel Aviv 2023 박람회에 참석해서 여러가지 보안 솔루션들을 구경하다가 MITRE ATT&CK 프레임워크를 이용해 개발한 솔루션들을 많이 보았다. MITRE ATT&CK 프레임워크가 뭔지 몰랐던 나라서 전시회에선 그냥 신기해하면서 보다가 호텔에 와서 후다닥 찾아보았다. MITRE ATT&CK 프레임워크를 한 문장으로 요약하면? 실제 공격 사례를 바탕으로 여러가지 환경에서의 취약점을 정의하고, 해당 취약점의 킬체인들을 정리해둔 데이터베이스 MITRE 는 보안 취약점 리스트인 CVE 를 관리하는 비영리 단체이다. 이 MITRE 에서 이때까지 축적된 모든 데이터들을 이용해 세상에 존재하는 취약점들을 공격 단계별로 분류하고, 이 취약점을 공격하는 방법들에 대해 정리한 것이 MITRE A..
-
EME (Encrypted Media Extension)란?보안 2019. 4. 12. 16:05
EME는 Encrypted Media Extension의 약자로, DRM이 걸려있는 영상 컨텐츠를 사용자가 단말기에서 보안 프로그램 설치 없이 사용할 수 있게 해주는 기술이다. 사실 번지르르한 설명 전 EME 를 짧게 설명한다면 아래와 같이 요약할 수 있다. DRM 솔루션 이용시 필요한 보안 프로그램을 대기업(구글, MS, 애플)이 브라우저(크롬, 엣지, 사파리)에 미리 심어둔 것 그래서 보안 프로그램 설치가 따로 필요 없는 것이다. 그럼 이제 EME 가 어떤 방식으로 동작하는지 살펴보자. EME를 적용하기 위해선 암호화된 영상이 저장되어있는 스토리지 서버 와 복호화 키가 들어있는 라이센스 서버 , 그리고 CDM 이 기본적으로 필요하다. 넷플릭스를 예로 들어보자. A씨가 넷플릭스에 접속해 로그인을 한다...
-
Little Endian, Big Endian보안 2019. 2. 20. 11:44
공부하던 중 리틀 엔디안과 빅 엔디안에 대한 내용이 나와 글을 적게 되었다. 결론부터 얘기하자면 리틀 엔디안은 메모리 끝에서부터 값을 채워넣는 방식이고, 빅 엔디안은 0번지부터 차례대로 값을 채워넣는 방식이다.예를 들어, 0x12345678 이라는 데이터가 있다면, 각각 아래와 같이 들어가게 된다.눈으로 그냥 보기에는 빅 엔디안이 보기도 쉽고 편할 것이다. 하지만 두 방식의 장단점이 있다. 먼저 빅 엔디안은 우리가 수를 읽는 방식과 같은 순서로 값이 들어가기 때문에 디버깅이나 리버싱 작업을 더편하게 할 수 있다는 장점이 있다.두 번째로 우리가 수의 크기를 비교할 때 어떻게 하는지 생각해보자. 두 수를 비교할 때 어디서부터 보는가?당연히 높은 자리수부터 비교한다. 이땐 메모리 앞쪽에 높은 자리 수가 자리하..
-
블록체인 작업증명 C++로 구현하기보안 2019. 2. 19. 17:52
블록체인 알고리즘은 비트코인으로 인해 사람들에게 많이 알려지게 되었다. 블록체인 알고리즘에서는 작업증명(POW - Proof Of Work) 이라는 과정을 통해 특정 거래내역이 신뢰할 수있는 정보인지 확인한다. 난 간단하게 작업증명 과정을 c++로 구현해 보았다. 그럼 이제 코드를 보자. #include #include "KISA_SHA256/KISA_SHA256.h" typedef struct blockheader { BYTE previousBlockHash[257]; // 전 블록의 거래내역을 해쉬 한 값 }; typedef struct block { int blockSize; // 거래내역 크기 blockheader header; // 위에 있는 블록헤더 int transactionCount = 0..