본문 바로가기
  • Pozip's House
Python/DGA

DGA란?

by 포집 2023. 7. 21.

DGA(Domain Generation Algorithm)

일반적으로 악성코드 중에서 파괴형 악성코드를 제외하고는 피해 PC를 감염시킨 후에 원격지에 있는 C2(Command & Control) 서버에 접속을 시도한다.

특히나, 봇 악성코드나 RAT 악성코드와 같은 부류들은 더욱이 C2 서버와의 연결이 중요하다.

상식상에서 결론적으로 어떠한 원격지와의 연결을 위해서는 IP 주소를 갖고 있거나, IP 주소와 대응하는 도메인 주소를 알고 있어야 연결이 가능하다.

그래서 악성코드 내부에 IP 주소를 하드코딩하는 경우도 있고 도메인 주소를 하드코딩하는 경우도 있지만 이런 경우에는 악성코드의 특징점으로 추출해내 안티 바이러스 제품에 녹여내면 손쉽게 악성코드를 탐지 및 차단할 수 있다.

그런것 때문에 악성코드 개발자? 라고 해야하나.. 그 분들은 어떻게하면 C2 서버와 연결은 안정적이게 하면서도 안티 바이러스 제품을 우회할 수 있을까를 생각했다.

그 결과가 요즘 많이 사용되는 DGA 이다.

DGA는 수많은 도메인주소를 무작위로 생성하도록 설계되어 있다. 그리고 무작위로 생성하기 때문에 당연히 안티 바이러스 우회도 손쉽게 가능하다.

그렇다면 악성코드는 무작위로 생성된 도메인에 어떻게 C2 서버로 연결할 수 있을까?

DGA는 특정 날짜에 생성되는 도메인 주소를 예측할 수 있도록 설계되어 있기 때문에 공격자가 DGA를 이용할 경우에는 특정 날짜에 생성될 수 있는 도메인 주소를 미리 적합한 등록 절차를 걸쳐 등록해두고 사용하는 식이다.


DGA(도메인 생성 알고리즘)는 수많은 malware 작성자가 사용하는 기법으로, 방어 조치를 피해 감염된 클라이언트 시스템을 숨기려고 할 때 사용됩니다. 이 기법의 목적은 무작위로 생성된 수백 또는 수천 개의 도메인 이름을 사용하여 감염된 클라이언트 시스템과 C&C 또는 C2(Command and Control) 서버 간 통신을 숨기는 것입니다. 이러한 도메인 이름은 궁극적으로 C&C 서버의 IP 주소입니다.

잠시 여러분이 전쟁터의 군인이라고 상상해 보면 DGA 공격이 어떻게 이루어지는지 조금 더 쉽게 시각화할 수 있습니다. 여러분은 다른 군인들처럼 무선 주파수를 사용하는 통신 장비를 가지고 있습니다. 적군은 무선 주파수를 교란하여 통신을 방해하려고 할 것입니다. 이에 대한 대응책 한 가지가 주파수 호핑입니다. 즉, 전송 과정에서 주파수를 매우 빠르게 변경하는 무선 시스템을 사용하는 것입니다. 적군에게는 주파수가 예측 불가능하게 무작위로 변경되는 것처럼 보이므로 교란하기가 어렵습니다.

DGA는 malware의 주파수 호핑 통신 채널과 같습니다. DGA가 도메인 이름을 너무 자주 변경하므로 DNS 도메인 이름을 차단하는 방법으로는 malware의 C2 통신 채널을 차단하는 것이 불가능합니다. 식별 및 차단을 시도하기에는 무작위로 생성된 DNS 이름이 너무 많기 때문입니다.

이 기법은 Conficker 웜이 통신에 무작위로 생성된 도메인 이름을 대규모로 사용하기 시작한 2009년에 malware 세계에 등장했습니다. Conficker 웜 작성자는 보안 연구자 컨소시엄에서 웜이 통신에 사용하던 DNS 도메인을 종료시켜 웜의 C2 채널을 차단하자 이 대책을 개발했습니다. 2017년 전 세계로 확산된 WannaCry 랜섬웨어의 경우에도 DNS 공격 완화가 수행되었습니다.

'Python > DGA' 카테고리의 다른 글

BILSTM모델 구축  (0) 2023.07.21
DGA 논문참조  (0) 2023.07.21
다시 DGA  (0) 2023.07.21
DGA  (0) 2023.07.21
DGA분석 생각  (0) 2023.07.21