난독 화
난독 화 란 무엇입니까?
난독 화는 이해하기 어려운 것을 만드는 것을 의미합니다. 프로그래밍 코드는 종종 지적 재산권 또는 영업 비밀을 보호하고 공격자가 독점 소프트웨어 프로그램을 리버스 엔지니어링하는 것을 방지하기 위해 난독 처리됩니다.
프로그램 코드의 일부 또는 전부를 암호화하는 것은 하나의 난독 화 방법입니다. 다른 접근법으로는 잠재적으로 드러내는 메타 데이터를 제거하고,클래스 및 변수 이름을 무의미한 레이블로 바꾸고,사용되지 않거나 의미없는 코드를 응용 프로그램 스크립트에 추가하는 것이 있습니다. 난독 화기라는 도구는 동일한 방식으로 작동하지만 읽고 이해하기가 더 어려운 프로그램으로 간단한 소스 코드를 자동으로 변환합니다.
불행하게도,악성 코드 작성자는 맬웨어 방지 도구에 의해 탐지되는 공격 메커니즘을 방지하기 위해 이러한 방법을 사용합니다. 2020 솔라 윈즈 공격은 방어를 피하기 위해 난독 화를 사용하는 해커의 예입니다.
해독 기술을 사용하여 난독 화를 리버스 엔지니어링 또는 실행 취소 할 수 있습니다. 이러한 기술에는 프로그램 슬라이싱이 포함되며,여기에는 프로그램 코드를 프로그램의 특정 지점에서 관련 문으로 축소하는 작업이 포함됩니다. 컴파일러 최적화 및 프로그램 합성은 두 가지 다른 해독 기술입니다. 난독 화는 리버스 엔지니어링을 어렵게 만들고 문제를 해결할 가치가 없도록하는 것을 목표로합니다.
난독 화는 어떻게 작동합니까?
컴퓨터 코드의 난독 화는 복잡한 원형 교차로 구 및 중복 논리를 사용하여 독자가 코드를 이해하기 어렵게 만듭니다. 목표는 읽고있는 내용의 복잡한 구문으로 독자를 산만하게하고 메시지의 진정한 내용을 결정하기 어렵게 만드는 것입니다.
컴퓨터 코드로,독자는 사람,컴퓨팅 장치 또는 다른 프로그램일 수 있다. 난독 화는 또한 코드를 해석하기 위해 디지털 서명에 크게 의존하는 바이러스 백신 도구 및 기타 프로그램을 속이는 데 사용됩니다. 그들은 자동으로 소스 코드를 리버스 엔지니어링 할 수 있습니다;난독 화는 어렵게이 프로그램뿐만 아니라 자신의 디 컴파일을 할 수 있도록하는 것을 목표로하고있다.
코드 난독 화는 프로그램의 원래 코드의 내용을 변경하는 것이 아니라 그 코드의 전달 방법과 표현을 더 혼란스럽게 만드는 것입니다. 난독 화는 프로그램의 작동 방식이나 최종 출력을 변경하지 않습니다.
다음은 일반 자바 스크립트 코드의 예제 스 니펫입니다:
var greeting = 'Hello World';greeting = 10;var product = greeting * greeting;
난독 화 된 형태의 동일한 스 니펫은 다음과 같습니다:
var _0x154f=;var _0x52df=function(_0x159d61,_0x12b953){_0x159d61=_0x159d61-0x122;var _0x154f4b=_0x154f;return _0x154f4b;};(function(_0x19e682,_0x2b7215){var _0x5e377c=_0x52df;while(!!){try{var _0x2d3a87=-parseInt(_0x5e377c(0x129))*parseInt(_0x5e377c(0x123))+-parseInt(_0x5e377c(0x125))*parseInt(_0x5e377c(0x12e))+parseInt(_0x5e377c(0x127))*-parseInt(_0x5e377c(0x126))+-parseInt(_0x5e377c(0x124))*-parseInt(_0x5e377c(0x12f))+-parseInt(_0x5e377c(0x128))*-parseInt(_0x5e377c(0x12b))+parseInt(_0x5e377c(0x12a))*parseInt(_0x5e377c(0x12d))+parseInt(_0x5e377c(0x12c))*parseInt(_0x5e377c(0x122));if(_0x2d3a87===_0x2b7215)break;else _0x19e682(_0x19e682());}catch(_0x22c179){_0x19e682(_0x19e682());}}}(_0x154f,0x1918c));var greeting='Hello\x20World';greeting=0xa;var product=greeting*greeting;
난독 버전은 인간의 눈을 사용하여 따라 거의 불가능하다.
난독 화 기술
난독 화는 여러 가지 다른 방법을 포함한다. 종종 여러 기술을 사용하여 계층화 된 효과를 만듭니다.
컴파일된 소프트웨어 언어로 작성된 프로그램은 난독 화하기가 더 쉽습니다. 이는 일반적으로 읽기 쉬운 중급 수준의 지침을 만들기 때문입니다. 이것은 프로그래밍 언어와 컴파일러를 내장합니다..
몇 가지 일반적인 난독 화 기술은 다음과 같습니다:
- 이름 바꾸기. 난독 화자는 변수의 메서드 및 이름을 변경합니다. 새 이름에는 인쇄 할 수 없거나 보이지 않는 문자가 포함될 수 있습니다.
- 포장. 이 코드를 읽을 수 있도록 전체 프로그램을 압축합니다.
- 제어 흐름. 디컴파일된 코드는 스파게티 논리처럼 보이도록 만들어졌는데,이는 구조화되지 않고 생각의 라인이 가려진 코드를 유지하기 어렵다. 이 코드의 결과는 명확하지 않으며 코드의 요점을 살펴 보는 것이 어렵습니다.
- 명령 패턴 변환. 이 방법은 컴파일러에서 만든 일반적인 명령을 사용하여 동일한 작업을 효과적으로 수행하는 더 복잡하고 덜 일반적인 명령어로 바꿉니다.
- 더미 코드 삽입. 더미 코드는 읽기 및 리버스 엔지니어링을 어렵게 만들기 위해 프로그램에 추가 할 수 있지만 프로그램의 논리 나 결과에 영향을 미치지 않습니다.
- 메타데이터 또는 사용되지 않는 코드 제거. 사용되지 않는 코드 및 메타 데이터는 독자에게 워드 문서의 주석과 같이 프로그램에 대한 추가 정보를 제공하여 읽고 디버깅하는 데 도움이 될 수 있습니다. 메타데이터 및 사용되지 않는 코드를 제거하면 프로그램 및 코드에 대한 정보가 줄어듭니다.
- 불투명 술어 삽입. 코드의 조건자는 참 또는 거짓 논리 식입니다. 불투명 한 술어는 조건부 분기 또는 통계 분석으로 결과를 쉽게 결정할 수없는 문입니다. 불투명한 술어를 삽입하면 실행되지 않지만 디컴파일된 출력을 이해하려고 시도하는 독자가 당황하는 불필요한 코드가 발생합니다.
- 디버그 방지. 합법적 인 소프트웨어 엔지니어와 해커는 디버그 도구를 사용하여 코드를 한 줄씩 검사합니다. 이러한 도구를 통해 소프트웨어 엔지니어는 코드 문제를 발견 할 수 있으며 해커는이를 사용하여 코드를 리버스 엔지니어링 할 수 있습니다. 보안 전문가는 해커가 공격의 일부로 디버그 프로그램을 실행 중일 때를 식별하기 위해 디버그 방지 도구를 사용할 수 있습니다. 해커는 디버그 방지 도구를 실행하여 디버그 도구를 사용하여 코드에 대한 변경 사항을 식별하는 시점을 식별할 수 있습니다.
- 변조 방지. 이러한 도구는 변조 된 코드를 감지하고 수정 된 경우 프로그램을 중지합니다.
- 문자열 암호화. 이 메서드는 암호화를 사용하여 실행 파일의 문자열을 숨기고 프로그램을 실행하는 데 필요한 값만 복원합니다. 이 어려운 프로그램을 통해 이동 및 특정 문자열을 검색 할 수 있습니다.
- 코드 조옮김. 이는 동작에 영향을 주지 않고 코드에서 루틴과 분기를 재정렬하는 것입니다.
난독 화 성공 측정 방법
난독 화 방법의 성공은 다음 기준을 사용하여 측정 할 수 있습니다:
- 힘. 변환된 코드가 자동화된 해독 시도에 저항하는 정도는 강도를 결정합니다. 더 많은 노력,시간 및 리소스가 필요할수록 코드가 강해집니다.
- 차별화. 변환된 코드가 원본과 다른 정도는 코드가 얼마나 효과적인지 보여주는 또 다른 척도입니다. 차별화를 판단하는 데 사용되는 방법 중 일부는 다음과 같습니다.
- 새 코드에 포함 된 술어의 수입니다.
- 상속 트리의 깊이-코드의 복잡성을 나타내는 데 사용되는 메트릭입니다. 더 높은 디트는 더 복잡한 프로그램을 의미합니다.
- 비용. 비용 효율적인 난독 화 방법은 특히 더 큰 응용 프로그램을 위해 얼마나 잘 확장 될 때 비용이 많이 드는 방법보다 더 유용 할 것입니다.
- 복잡성. 난독 화자가 더 많은 레이어를 추가할수록 프로그램이 더 복잡해 지므로 난독 화가보다 성공적입니다.
난독 화의 장점
난독 화의 주요 장점은 다음과 같습니다:
- 비밀. 난독 화는 코드에 포함 된 중요한 정보를 숨 깁니다. 이는 경쟁사와 공격자로부터 코드를 보호하려는 합법적인 조직의 장점입니다. 반대로,나쁜 행위자는 악성 코드를 숨기기 위해 난독 화의 비밀을 활용합니다.
- 효율성. 사용되지 않는 코드 제거와 같은 일부 난독 화 기술은 프로그램을 축소하고 리소스를 덜 많이 실행하는 효과가 있습니다.
- 보안. 난독 화는 응용 프로그램 자체 보호라고도하는 기본 제공 보안 방법입니다. 외부 보안 방법을 사용하는 대신 보호 대상 내에서 작동합니다. 신뢰할 수 없는 환경에서 실행되고 중요한 정보가 포함된 응용 프로그램을 보호하는 데 적합합니다.
난독 화의 단점
난독 화의 주요 단점 중 하나는 맬웨어에도 사용된다는 것입니다. 악성 코드 작성자는 특정 기능에 대한 코드를 스캔 바이러스 백신 프로그램을 회피하는 데 사용합니다. 이러한 기능을 모호하게함으로써 맬웨어는 바이러스 백신 소프트웨어에 합법적 인 것처럼 보입니다.
맬웨어 작성자가 사용하는 일반적인 기술은 다음과 같습니다:
- 독점 또는(오르). 데이터를 암호화하는 데 사용됩니다.
- 부패-13. 임의의 문자에 대 한 코드를 대체 하는 명령입니다.
난독 화로 작성자는 새로운 맬웨어를 개발하는 대신 일반적으로 사용되는 상품 공격 방법을 재 포장하여 기능을 위장합니다. 경우에 따라 악의적인 행위자는 공급업체별 기술을 포함합니다.
난독 화의 또 다른 단점은 코드를 읽기가 더 어려워 질 수 있다는 것입니다. 예를 들어 문자열 암호화 난독 화 방법을 사용하는 코드는 런타임에 문자열을 해독해야하므로 성능이 저하됩니다.
난독 화 및 솔라 윈즈
2019 년 9 월까지 시작된 것으로 생각되는 텍사스 주 오스틴의 솔라 윈즈에 대한 공격으로 인해 많은 다른 회사와 정부 기관이 침해당했습니다. 이 공격은 2020 년 12 월에 발견되었으며 러시아 해커에 기인합니다. 처음에는 솔라 윈즈의 오리온 관리 플랫폼을 손상 시켰습니다.
공격자는 오리온 플랫폼에 대한 소프트웨어 업데이트에 백도어를 심고 난독 화,기계 학습 및 인공 지능 기술을 결합 햇살 악성 코드를 사용했다. 그들의 노력을 위장하고 방어를 우회하기 위해 감사 로그를 변경하고 사용 후 파일 및 프로그램을 삭제했으며 네트워크에서 합법적 인 응용 프로그램으로 표시되도록 활동을 위조했습니다.
이 공급망 공격은 1 년 이상 발견되지 않은 것으로 의심된다. 오리온 코드에 삽입 된 악성 코드는 사용자가 감염된 업데이트를 다운로드 할 때까지 휴면 숨겨진 누워. 그런 다음 감지되지 않은 네트워크를 통해 확산 오리온을 사용하여 조직의 긴 목록을 감염.
난독 화는 해커가 시스템을 침입하기 위해 사용하는 많은 기술 중 하나입니다. 테크타겟의 심층적인 사이버 보안 계획 가이드에서 다양한 유형의 사이버 보안 공격으로부터 방어하는 방법에 대해 자세히 알아보세요.