꿈을꾸는 파랑새

오늘은 구글의.zip 도메인브라우저의 파일 아카이버 공격 주의에 대해 알아보겠습니다. 해당 브라우저의 파일 아카이버 익스플로잇을 활용해 피해자가. zip 도메인을 방문할 때 웹 브라우저에서 아카이빙 소프트웨어를 에뮬레이션하는 새로운 피싱 기법입니다. 해당 문제는 구글에서 최근 3월에 .app 및 .dev와 같이 가장 인기 있고 안전한 최상위 도메인을 출시했고 인터넷에 .dad,.phd,.prof,.esq,.foo,.zip,.mov,.nexus 등 8개의 새로운 확장자를 추가할 수가 있습니다. 여기서 문제가 발생하는데 다름이 아니고 해당 부분을 악용하면 이게 잘 보면 프로그램 확장자하고 비슷하다는 것을 확인할 수가 있다는 것입니다.

이렇게 혼동을 할 수가 있으니까 이것을 악용한다고 하면 피싱 공격을 진행할 수가 있습니다.
이것을 mr.d0x는 잠재적인 공격 시나리오에서 피싱 사이트 즉 가짜 ZIP 아카이브 내에서 포함된 파일을 클릭할 때 사용자 자격증명 수집 페이지로 리디렉션 하려고 사용자를 속일 수가 있으며 실행 불가능한 파일을 나열하고 사용자가 다운로드를 시작하기 위해 클릭하면 실행 파일을 다운로드 한 게 있다고 합니다. 해당 mr.d0x가 만들어놓은 사이트로 이동하면 다음과 같은 화면이 나오는 것을 확인할 수가 있습니다.

구글의.zip 도메인 브라우저의 파일 아카이버 공격 관련 글

가짜 브라우저 내 WinRar 화면
가짜 브라우저 내 WinRar 화면

mr.d0x가 재현 한 사이트로 이동하면 다음과 같은 화면을 볼 수가 있습니다.

즉 사이트를 접속하면 마치 WinRAR에서 압축을 파일을 풀기 전의 모습을 볼 수가 있습니다.
실행 불가능한 파일을 업로드 하고 나서 사용자가 다운로드를 시작하기 위해 클릭하면 실행 파일을 다운로드 하게 하는 방식을 사용하고 있습니다.
해당 사이트에서 invoice.pdf 이라는 파일이 있다고 가정을 했을 때는 invoice.pdf 클릭을 하면 7z2300-extra.7z 이라는 파일이 다운로드 되게 구성이 돼 있습니다.

가짜 브라우저 내 가짜 스캐너
가짜 브라우저 내 가짜 스캐너

또한, Windows 파일 탐색기의 검색 표시줄은 존재하지 않는. ZIP 파일을 검색하면 파일 이름이 합법적인. zip 도메인에 해당하면 웹 브라우저에서 직접 파일이 열리게도 할 수가 있습니다.
즉 해당 연구원은 해당 Winrar를 더욱더 설득력 있게 하려고 가짜 검사 버튼을 통해서 메시지가 출력되게 구성을 해놓았습니다.
그리고 웹 소스를 보면 다음과 같이 돼 있습니다.

해당 관련 웹소스
해당 관련 웹소스

<script>
// Shout out ChatGPT for the code below //
// Code highlights the selected rows blue or unselects them //

// Get all the rows in the .files table
var rows = document.querySelectorAll('.files tr');
var rowCount = rows.length;

// Add a click event listener to each row
for (var i = 0; i < rows.length; i++) {
  rows[i].addEventListener('click', function(event) {
    // Stop the event from bubbling up to the document
    event.stopPropagation();

    // Remove the selected class from any other rows
    for (var j = 0; j < rows.length; j++) {
      rows[j].classList.remove('selected');

      // Reset the background color of the first cell of other rows
      if (rows[j].querySelector('td')) {
        rows[j].querySelector('td').style.backgroundColor = '';
      }
    }

    // Add the selected class to the clicked row
    this.classList.add('selected');

    // Remove the background color from the first cell of the clicked row
    if (this.querySelector('td')) {
      this.querySelector('td').style.backgroundColor = 'inherit';
    }
  });
}

// Add a click event listener to the document
document.addEventListener('click', function() {
  // Remove the selected class from all rows
  for (var i = 0; i < rows.length; i++) {
    rows[i].classList.remove('selected');

    // Reset the background color of the first cell of all rows
    if (rows[i].querySelector('td')) {
      rows[i].querySelector('td').style.backgroundColor = '';
    }
  }
});
</script>

설명을 하면 다음과 같습니다.
코드는 파일 목록 테이블에서 행을 선택하고 선택을 취소하는 데 사용
테이블의 모든 행을 가져옴
각 행에 클릭 이벤트 리스너를 추가
클릭 이벤트가 발생하면 해당 행이 선택
선택된 행은 파란색 또는 다른 스타일로 강조 표시
다른 행은 선택이 취소되고 원래 스타일로 돌아감
문서가 클릭 되면 모든 행에서 선택된 클래스가 제거되어 선택이 취소
해당 코드는 사용자가 파일 목록 테이블에서 특정 파일을 선택하거나 선택을 취소할 수 있도록 하며 선택된 파일은 시각적으로 강조되어 사용자가 선택한 항목을 쉽게 식별할 수 있으며 또한 문서를 클릭함으로써 선택을 취소할 수 있습니다. 이를 통해 사용자는 테이블에서 원하는 항목을 선택하고 관련 작업을 수행할 수 있습니다.
그리고 다음 웹 소스에 있는 코드입니다.

해당 관련 웹소스 2
해당 관련 웹소스 2

<script>
	function hide(){
  		document.getElementById("warningBox").style.display = 'none';
	}

	function hideScan(){
  		document.getElementById("successBox").style.display = 'none';
	}

	function runScan() {
		var rows = document.querySelectorAll('.files tr');
		var rowCount = rows.length - 1;
		var mssg = document.getElementById("numOfRows");
		mssg.innerHTML = rowCount + ' files scanned. No threats found.';
		document.getElementById("successBox").style.display = 'block';
	}

	function error(){
		document.getElementById("warningBox").style.display = 'block';
	}

	function extract() {
  // URL of the file to be downloaded
  const fileUrl = 'https://www.7-zip(.)org/a/7z2300-extra.7z';

  const link = document.createElement('a');
  link.href = fileUrl;
  link.download = 'invoice.zip';

  document.body.appendChild(link);

  link.click();

  document.body.removeChild(link);
}

	function downloadFakePdf(){
	// URL of the file to be downloaded
  const fileUrl = 'https://www.7-zip(.)org/a/7z2300-extra.7z';

  const link = document.createElement('a');
  link.href = fileUrl;
  link.download = 'invoice.exe';

  document.body.appendChild(link);

  link.click();

  document.body.removeChild(link);
	}
</script>

HTTP Debugger Pro 본 사이트 동작 방식
HTTP Debugger Pro 본 사이트 동작 방식

해당 코드는 다양한 기능을 구현하는 JavaScript 함수들로 구성되어 있습니다.
hide():warningBox 요소의 화면 표시를 숨깁니다. 즉, 경고 메시지를 숨기는 역할
hideScan():successBox 요소의 화면 표시를 숨깁니다. 해당 함수는 스캔 결과 메시지를 숨기는 역할
runScan(): 파일 스캔을 실행하는 함수 코드에서는 파일 목록 테이블의 행을 스캔하고 스캔된 파일 수와 위협이 발견되지 않았다는 메시지를 numOfRows 요소에 표시 그리고 successBox 요소를 화면에 표시
error():경고 상자(warningBox)를 화면에 표시하는 함수 해당 함수는 오류 또는 경고 메시지를 사용자에게 보여주는 역할
extract():특정 파일을 다운로드하는 함수임
fileUrl 변수에 지정된 URL에서 파일을 다운로드 후 다운로드될 파일의 이름을 invoice.zip으로 설정
downloadFakePdf():가짜 PDF 파일을 내려받는 함수fileUrl 변수에 지정된 URL에서 파일을 다운로드 하고 다운로드될 파일의 이름을 invoice.exe 로 설정
예를 들어, 파일 스캔 기능, 다운로드 기능, 경고 메시지 표시 등을 구현할 수 있으며 코드를 사용하여 웹 애플리케이션에서 파일 관련 작업을 수행하거나 사용자에게 메시지를 표시할 수 있습니다.
해당 코드를 악용할 때는 extract()와 downloadFakePdf() 함수를 이용해서 파일을 다운로드 할 수가 있으며 컴퓨터 사용자가 신뢰할만한 파일로 오인해서 위조된 파일 실행을 할 수가 있습니다. 임의의 경고 메시지를 표시하여 사용자를 혼동시키거나, 사이트의 신뢰도 낮출 수가 있습니다.
악용을 할 경우 자격 증명 도용 및 악성코드를 유포할 수가 있으며 고전적인 수법인 document.pdf를 document.pdf.exe 로 해서 사용자 컴퓨터를 장악하는 데 사용을 할 수가 있을 것입니다.
그리고 지금도 해당 도메인을 사용해서 공격이 이루어지는 상태이며 이런 방식으로도 악성코드 및 피싱 사이트가 증가할 것으로 판단하면 사용자가 조심하지 않으며 피싱 및 악성코드 같은 것에 당할 수가 있을 것입니다.

728x90
반응형
그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band