-
coinminer 바이러스 PC 삭제Windows 2025. 4. 2. 16:53반응형
Malwr-Resource-29-01-coinminer
pc에 감염된 파일을 삭제하자
아래 내용을 복사하여 배치파일(.bat)로 저장 후 관리자 권한으로 실행
@echo off
REM 관리자 권한 획득
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 관리자 권한을 요청 ...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
rem del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
setlocal enabledelayedexpansion
:: 날짜 및 시간으로 로그 파일명 생성
for /f "tokens=1-3 delims=/ " %%A in ('echo %date%') do set log_date=%%C%%A%%B
for /f "tokens=1-3 delims=: " %%X in ('echo %time%') do set log_time=%%X%%Y%%Z
set "log_dir=C:\VirusLog"
set "log_file=%log_dir%\delete_log_%log_date%_%log_time%.txt"
set "target_dir=%WINDIR%\System32"
set "task_path=%WINDIR%\System32\Tasks\console_zero"
set "winsvcf_path=%WINDIR%\System32\winsvcf"
set "reg_services=HKLM\SYSTEM\CurrentControlSet\Services"
set "reg_svchost=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost\DcomLaunch"
:: 로그 초기화
if not exist "%log_dir%" mkdir "%log_dir%"
echo [검사 시작 - %date% %time%] > "%log_file%"
set /a total_files=0
set /a deleted_files=0
set /a failed_files=0
set /a pending_delete=0
set /a total_reg=0
set /a deleted_reg=0
set /a failed_reg=0
:: ?? 실행 중 프로세스 종료
taskkill /f /im console_zero.exe >nul 2>&1
:: ?? 작업 스케줄러 태스크 종료 및 삭제
schtasks /End /TN "console_zero" >nul 2>&1
schtasks /Delete /TN "console_zero" /F >nul 2>&1
:: ?? 감염 파일 검사 및 삭제
echo [파일 검사 시작] >> "%log_file%"
for /f %%f in ('dir /b /a-d "%target_dir%\x*.exe" "%target_dir%\x*.dat" 2^>nul ^| findstr /r "^x[0-9][0-9][0-9][0-9][0-9][0-9]\.exe$ ^x[0-9][0-9][0-9][0-9][0-9][0-9]\.dat$"') do (
set /a total_files+=1
set "filepath=%target_dir%\%%f"
del /f /q "!filepath!" >nul 2>&1
if exist "!filepath!" (
:: 삭제 실패 → 재부팅 후 삭제 예약
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v PendingFileRenameOperations /t REG_MULTI_SZ /f /d "\??\!filepath!" >nul 2>&1
echo [삭제 실패 → 재부팅시 삭제 예약됨] !filepath! >> "%log_file%"
set /a pending_delete+=1
) else (
echo [삭제됨] !filepath! >> "%log_file%"
set /a deleted_files+=1
)
echo 진행 상태: 파일 검사 !total_files!개 중 !deleted_files!개 삭제됨, !pending_delete!개 삭제 예약됨...
)
:: ?? 추가 감염 항목 삭제
echo [추가 감염 항목 삭제] >> "%log_file%"
:: console_zero.exe 삭제 (재확인)
if exist "%target_dir%\console_zero.exe" (
del /f /q "%target_dir%\console_zero.exe"
if exist "%target_dir%\console_zero.exe" (
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v PendingFileRenameOperations /t REG_MULTI_SZ /f /d "\??\%target_dir%\console_zero.exe" >nul
echo [삭제 실패 → 재부팅시 삭제 예약됨] %target_dir%\console_zero.exe >> "%log_file%"
set /a pending_delete+=1
) else (
echo [삭제됨] %target_dir%\console_zero.exe >> "%log_file%"
)
) else (
echo [존재하지 않음] %target_dir%\console_zero.exe >> "%log_file%"
)
:: console_zero 태스크 폴더 삭제
if exist "%task_path%" (
rmdir /s /q "%task_path%"
if exist "%task_path%" (
echo [삭제 실패] %task_path% >> "%log_file%"
) else (
echo [삭제됨] %task_path% >> "%log_file%"
)
) else (
echo [존재하지 않음] %task_path% >> "%log_file%"
)
:: winsvcf 폴더 삭제
if exist "%winsvcf_path%" (
rmdir /s /q "%winsvcf_path%"
if exist "%winsvcf_path%" (
echo [삭제 실패] %winsvcf_path% >> "%log_file%"
) else (
echo [삭제됨] %winsvcf_path% >> "%log_file%"
)
) else (
echo [존재하지 않음] %winsvcf_path% >> "%log_file%"
)
:: ?? 레지스트리 검사 및 삭제
echo [레지스트리 검사 시작] >> "%log_file%"
set found_reg=0
for /f %%s in ('reg query "%reg_services%" /s /f "x??????" 2^>nul ^| findstr /r "\\x[0-9][0-9][0-9][0-9][0-9][0-9]$"') do (
set /a found_reg+=1
reg delete "%%s" /f >nul 2>&1
reg query "%%s" >nul 2>&1
if errorlevel 1 (
echo [삭제됨] 레지스트리: %%s >> "%log_file%"
set /a deleted_reg+=1
) else (
echo [삭제 실패] 레지스트리: %%s >> "%log_file%"
set /a failed_reg+=1
)
echo 진행 상태: 레지스트리 !found_reg!개 중 !deleted_reg!개 삭제됨, !failed_reg!개 삭제 실패...
)
if !found_reg! == 0 (
echo [레지스트리 검사 결과] 감염된 서비스 레지스트리 항목 없음 >> "%log_file%"
)
:: Svchost 값 검사 및 삭제
set found_svchost=0
for /f %%v in ('reg query "%reg_svchost%" /v * 2^>nul ^| findstr /r "\<x[0-9][0-9][0-9][0-9][0-9][0-9]\>"') do (
set /a found_svchost+=1
reg delete "%reg_svchost%" /v "%%v" /f >nul 2>&1
reg query "%reg_svchost%" /v "%%v" >nul 2>&1
if errorlevel 1 (
echo [삭제됨] Svchost 값: %reg_svchost% -> %%v >> "%log_file%"
set /a deleted_reg+=1
) else (
echo [삭제 실패] Svchost 값: %reg_svchost% -> %%v >> "%log_file%"
set /a failed_reg+=1
)
echo 진행 상태: Svchost 값 !found_svchost!개 중 !deleted_reg!개 삭제됨, !failed_reg!개 삭제 실패...
)
if !found_svchost! == 0 (
echo [레지스트리 검사 결과] 감염된 Svchost 값 없음 >> "%log_file%"
)
:: ? 완료 메시지
echo 모든 감염 항목 검사 및 삭제 완료. 로그 파일: %log_file%
if !pending_delete! gtr 0 (
echo ※ 일부 항목은 재부팅 후 삭제됩니다. >> "%log_file%"
echo [알림] 재부팅 후 삭제 예약: !pending_delete!개 항목
)
pause반응형'Windows' 카테고리의 다른 글
USB 내 coinminer 바이러스 삭제 (0) 2025.04.02 coinminer 바이러스(Malwr-Resource-29-01-coinminer) 예방 (0) 2025.04.02 coinminer 바이러스(Malwr-Resource-29-01-coinminer) (0) 2025.04.02 제조사별 부트메뉴 진입 (0) 2019.04.19 Windows 10 SMB 설정 및 공유 설정 (0) 2019.04.18 댓글