검수요청.png검수요청.png

브이비스크립트

해시넷
nineto12 (토론 | 기여)님의 2020년 8월 5일 (수) 09:27 판
이동: 둘러보기, 검색
파일:파일:브이비스크립트 로고.png
브이비스크립트(VBScript)

브이비스크립트(VBScript)는 Visual Basic Scripting Edition의 약자로서, 미국 마이크로소프트 비주얼베이직(Visual Basic) 기반의 스크립트 프로그래밍 언어이다.

개요

브이비스크립트는 마이크로소프트가 만든 액티브 스크립트 언어다. 문장마다 변환되어 해석, 실행되는 언어이며 윈도우 98 이후 OS에 기본으로 설치되어 있다. 브이비스크립트는 윈도우 스크립트를 사용하여 응용 프로그램을 호스팅한다. 바이러스의 대부분이 VBS로 만들어지는 사건이 발생해 사람들에게는 바이러스 만드는 언어로 많이 알려진 언어다.[1]

브이비스크립트는 마이크로소프트가 개발한 액티브 스크립트 언어이다. 이 언어의 구문은 마이크로소프트의 비주얼 베이직 프로그래밍 언어 계통의 일부를 반영한다. 브이비스크립트는 윈도우 98 이후의 여러 윈도우 운영 체제에서 기본으로 설치되어 있으며, 윈도우 서버 운영 체제의 경우 윈도우 NT 4.0 옵션 팩 이후로 이용이 가능하다. 또, 실행 중인 장치의 목적과 구성에 따라 윈도우 CE에서도 선택적으로 이용이 가능하다.

초기에는 1970년대 말에 처음 개발된 배치 언어보다 더 강력한 자동화 도구 검색에 대한 지원을 윈도우 관리자로부터 받았다. 브이비스크립트는 호스트 환경 안에서 실행되어야 하며, 어떠한 환경에서는 마이크로소프트 윈도우의 표준 설치(윈도우 스크립트 호스트, 윈도우 인터넷 익스플로러) 위에 제공된다. 게다가 브이비스크립트 호스트 환경은 마이크로소프트 스크립트 컨트롤(msscript.ocx)과 같은 기술을 통해 다른 프로그램에 이식되는 경우가 있다.[2]

특징

장단점

브이비스크립트는 썬과 넷스케이프의 자바스크립트 개발에 자극을 받아 마이크로소프트에서 개발한 클라이언트측 스크립트이다. 비주얼 베이직의 일부 기능을 웹 환경에서 사용할수 있도록 작성되었다. 브이비스크립트는 인터넷 익스플로러 2.0이상에서 지원도고 있으나 리눅스나 유닉스 계열의 웹 브라우저에서는 브이비스크립트가 지원되지 않아 브이비스크립트가 코드가 포함된 웹 서버에 접근하면 화면이 깨져 알아보기 어려운 경우가 있다

브이비스크립트의 장점은 브이비스크립트는 전 세계 95% 이상의 사용자가 사용하고 있는 인터넷익스플로러 기본 스크립트 언어이다. 가장 배우기 쉬운 언어중 하나이며 빠른 시간 안에 프로그램을 작성할 수 있다. 브이비스크립트의 단점은 자바스크립트(JavaScript)와 마찬가지로 보안이 취약하다. 또한 익스플로러 이외의 웹 브라우저에서 거의 지원되지 않기 때문에 범용성에 문제가 있다.[3] 또한 브이비스크립트 파일은 웹브라우저 뿐 아니라 윈도우 98 이상에서 독립적으로 실행 가능하므로 바이러스 가능성이 커졌다. 그리고 브이비스크립트는 사용자 시스템의 파일이나 레지스트리를 생성, 변경, 삭제시 사용자 동의를 구하지 않기 때문에 마음대로 변경할 수 있고 이것은 보안에 문제가 생길 수 있다. 바이러스나 웜은 자기 자신을 복제할 수 있는 명령을 가지면 만들 수 있는데 브이비스크립트는 자기 복제 명령뿐 아니라 네트워크, 레지스트리, MAPI를 이용한 메일 전송 등 최근 바이러스가 필요한 거의 모든 기능을 제공하고 있다.[4]

스크립트

스크립트(script)란 컴퓨터 프로세서나 컴파일러가 아닌 다른 프로그램에 의해 번역되고 수행되는 명령문의 집합이라 할 수 있다. 연극 용어인 스크립트에서 유래되었으며 초창기 스크립트 언어는 배치언어( Batch Languages) 또는 작업 제어 언어(Job Control Language)라고도 부른다. 일반적으로 C나 C++과 같은 컴파일러 언어보다 제한된 능력과 느린 실행 속도를 갖지만, 프로그램 작성 측면에서는 보다 쉽고 빠르다고 할 수 있다. 웹 클라이언트 서버 환경에서 보면 펄(PERL)은 웹서버에서, 자바스크립트는 클라이언트에서, 브이비스크립트는 서버와 클라이언트에서 실행된다.

스크립트는 문서를 써내려 가듯 쉽게 작성하는 프로그래밍 언어를 말하는 것으로 전문적인 지식이 없는 일반인도 비교적 쉽게 작성할 수 있다. 시스템 레벨의 컴퓨터 제어가 불가능하고 속도도 느린 편이지만, 인터넷의 발달과 함께 이용자들이 늘어가고 있다.

스크립트는 HTML과 함께 사용되어 보다 동적인 홈페이지를 만들 수 있게 해주며, 홈페이지와 방문자 사이의 의사 전달의 매개체로 많이 사용된다. 마우스 조작에 따른 반응은 스크립트 사용의 가장 대표적인 예라고 할 수 있다. 즉, 마우스 포인터가 그림 위에 위치했을 때 그림의 모양이나 색깔이 변경되도록 한다거나, 마우스로 상위 메뉴를 클릭했을 때 하위 메뉴가 펼쳐져 나타나는 것 등은 많이 사용되는 스크립트 효과의 예이다. 최근들어 가장 널리 사용되고 있는 것은 자바스크립트와 브이비스크립트이다. 자바스크립트는 기존의 자바(Java)를 일반인도 보다 쉽게 사용할 수 있도록 해보자는 의도에서 나왔고, 브이비스크립트도 같은 의도로 비교적 쉬운 언어인 비주얼베이직의 형식을 빌어 만들어졌다.[5]

스크립트 언어

응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 가리킨다. 스크립트 프로그래밍 언어라고도 한다. 스크립트 언어는 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다.

스크립트 언어는 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어다. 비(非)스크립트 언어인 C, C++, 자바 등은 컴파일(Compile) 된 후 독립적으로 작동하는 하나의 완전한 응용 프로그램이지만, 자바스크립트, 제이쿼리(jQuery), 제이에스피(JSP), 피에이치피(PHP), 에이에스피(ASP), 펄, 파이썬(Python), 루비(Ruby), 브이비스크립트 등의 스크립트 언어는 다른 응용 프로그램 안에 삽입되어 해석되는 방식으로 작동한다.[6]

스크립트 종류

  • 자바스크립트 : 미국 넷스케이프(Netscape)의 브렌든 아이크(Brendan Eich)가 개발한 스크립트 프로그래밍 언어다. 자바스크립트는 표준 HTML 문서 내에 삽입되어 사용되며, 인터랙티브한 웹 페이지를 만들 수 있게 한다.
  • 제이쿼리 : HTML 문서에 삽입하여 사용할 수 있는 자바스크립트 라이브러리를 말한다.
  • 제이에스피​ : 제이에스피는 자바 서버 페이지(JavaServer Pages)의 약자로서, HTML 페이지 안에 자바 코드를 직접 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가 표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어다. 미국 썬 마이크로시스템즈가 처음 개발했고 2010년 오라클에 인수되었다. HTML 문서 안에 <% ... %> 기호를 쓰고, 그 안에 자바 코드를 삽입하는 방식으로 사용한다.
  • 피에이치피 : 피에이치피는 HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어다. 1994년 라스무스 러도프(Rasmus Lerdorf)가 개발했다. “Hypertext Preprocessor”의 약자다. 리눅스 운영체제에 아파치(Apache) 웹서버를 설치하고 마이에스큐엘(MySQL) DB 환경에서 피에이치피 프로그래밍 언어가 주로 사용되기 때문에 램프(LAMP)라는 말이 생겼다.
  • 에이에스피 : 에이에스피는 "Active Server Pages"의 약자로서, 미국 마이크로소프트의 윈도우 서버에서 운영되는 스크립트 방식의 웹 프로그래밍 언어다.
  •  : "Practical Extraction and Report Language"의 약자로서, 유닉스 계열의 운영체제에서 사용하는 스크립트 프로그래밍 언어다. 1987년 래리 월(Larry Wall)이 개발하였다.
  • 파이썬 : 1990년 네덜란드 암스텔담의 귀도 반 로썸(Guido van Rossum)이 개발한 객체 지향 스크립트 프로그래밍 언어다. 별도의 컴파일 과정이 필요 없어 개발기간이 단축되고, 리눅스나 윈도우 등 특정 플랫폼에 의존적이지 않고 독립적이다. 주로 장고(Django) 프레임워크 기반으로 개발한다.
  • 루비 : 1995년 일본의 마츠모토 유키히로(まつもとゆきひろ)가 만든 객체 지향 스크립트 프로그래밍 언어다. 파이썬과 유사하며 깃허브(GitHub) 사이트는 루비 언어를 사용하여 개발되었다.[6]

역사

브이비스크립트는 1996년에 출시된 마이크로소프트 윈도우 스크립트 기술(Microsoft Windows Script Technologies)의 일부로 시작되었다. 이 기술은 처음에 웹 개발자를 대상으로 했다. 불과 2년 남짓한 기간 동안 브이비스크립트는 버전 1.0에서 2.0으로 발전했고, 그 기간 동안 1980년대 초에 처음 개발된 일괄 언어보다 더 강력한 자동화 도구를 찾는 윈도우 시스템 관리자로부터 지지를 얻었다.

1988년 3월 6일 앨런 쿠퍼는 빌 게이츠에게 위젯을 역동적으로 추가할 수 있는 그의 쉘 프로토타입을 보여주었다. . 1991년 3월 20일 마이크로소프트는 "Quick Basic"을 채택했다. 이를 통해 사용자는 GUI를 통해 빠르고 쉽게 윈도우 앱을 만들 수 있었다.

1996년 8월 1일, 인터넷 익스플로러Internet Explorer는 브이비스크립트를 포함하는 기능으로 만들어졌다.

n 버전 5.0, 브이비스크립트의 기능은 정규식, 클래스, With 문, 다른 스크립트 실행 중에 작성된 스크립트 명령을 평가하고 실행하기 위한 Eval, ExecuteGlobal 기능, GetRef를 통한 함수와 점퍼 시스템 및 DCOM(Distributed COM) 지원을 포함한 새로운 기능으로 증가되었다.

버전 5.5에서는 서브매치(SubMatches)가 브이비스크립트의 정규식 클래스에 추가되어 마침내 스크립트 작성자가 표현식 그룹 내의 텍스트를 캡처할 수 있게 되었다. 그 기능은 이미 제이스크립트로 제공되었다.

.NET 프레임 워크 의 출현으로 스크립팅 팀은 개발을 위해 ASP.NET 내에서 향후 브이비스크립트 지원을 구현하기로 결정했다. 따라서 브이비스크립트 엔진의 새 버전은 개발되지 않고 마이크로소프트에서 버그 수정 및 보안 기능 향상을 담당한다.[7]

브이비스크립트를 이용한 악성코드

  • 브이비스크립트로 제작된 바이러스와 웜

브이비스크립트를 이용한 최초의 바이러스는 HTML 인터넷 바이러스로, 1998년에 나타났다. 초기의 VB 스크립트로 작성된 바이러스나 웜은 HTML 속에 브이비스크립트를 포함한 형태였고 사용자가 허락하지 않으면 실행되지 않는 문제가 있었지만 동일 제작자는 이후 조금씩 개량된 브이비스크립트를 이용한 악성 프로그램을 제작했다.

브이비스크립트 악성 프로그램을 발전시킨 사람은 자신을 Zulu로 부르는 아르헨티나 사람으로 1999년 초에 발견된 Zulu는 브이비스크립트 바이러스 중 최초의 암호화 기법을 사용한다. 이후 그가 제작한 라누스(Lanus) 바이러스는 MS에서 제공하는 암호화된 브이비스크립트를 이용한 최초의 바이러스이다.

2000년 2월 발견된 넷로그(Netlog) 웜은 독특하게 퍼지는 웜으로 임의의 아이피 어드레스를 내부적인 계산으로 구한 후, 파일의 읽기 및 쓰기가 가능한지 검사하고 쓰기가 가능하면 자신을 복사하는 형태로 되어 있다. 많은 기업에서 공유폴더를 사용하며 심지어 씨드라이브 전체를 읽기 및 쓰기로 공유하는 형태가 많다. 이 경우 넷로그 뿐 아니라 공유폴더로 퍼지는 유사 웜이나 바이러스에 쉽게 감염될 수 있으며, 다른 사람이 공유된 폴더의 파일 접근이 자유롭기 때문에 보안상 문제가 된다.

2000년 5월 26일 스테이지(Stages) 웜이 발견되었는데 이 파일은 에스에이치에스(SHS) 파일 형태로 실행하면 성적 농담을 출력해 사용자가 일반 텍스트 파일로 생각하게 한다. 브이비스크립트로 작성되었지만 에스에이치에스 파일 구조는 워드나 엑셀의 파일 포맷과 유사한 형태다.

2000년 6월 스페인에서 발견된 티모포니카(Timofonica)는 전형적인 브이비스크립트 웜이지만 한가지 특징적인 증상으로 유명해진 웜이다. 일부 언론에서 휴대전화단말기를 감염시키는 것으로 잘못 알려졌지만 실제로는 휴대전화단말기로 문자 메시지를 보낼 수 있지만 휴대전화단말기 자체를 감염시키지는 않는다.

2000년 9월에 발견된 퍼니(Funny)는 특정 온라인 뱅킹 시스템의 사용자 정보를 빼 갈 수 있는 트로이목마를 포함한 형태하고 있어 개인정보유출과 함께 범죄에 악용될 수 있는 바이러스이다.

2001년 5월에 발견된 햅타임(Haptime)과 변형들은 아웃룩 익스프레스의 보안상 취약성도 이용하며 HTML, 에이에스피, 브이비스크립트 등을 감염시키고 일부 버전은 HTA 파일 생성등 스크립트 바이러스가 할 수 있는 다양한 감염 기법을 사용한다.

2001년 4월과 8월에 브이비스크립트를 이용하는 Logo/Login, VBS/PeachyPDF가 발견되었다. 이들 웜은 VBS 파일 형태로 퍼지지 않고 메일 발송 기능을 가진 브이비스크립트를 파일로 만든 후 실행해 브이비스크립트의 기능을 이용해 첨부 파일을 아웃룩으로 보내는 형태이다. 이런 방법은 아웃룩을 통한 메일 발송이 불가능한 언어나 프로그래밍 실력이 다소 떨어지는 바이러스 제작자들이 상대적으로 제작하기 쉬운 브이비스크립트를 이용해 바이러스가 포함된 파일을 메일로 발송하는 방법을 사용하고 있다.

2001년 중반 이후 VBS 등의 확장자는 아웃룩으로 메일 발송을 제한하는 새로운 오피스 제품군의 보급으로 브이비스크립트를 이용한 웜이나 바이러스는 감소하고 대신 초기에 써캠, 님다와 같은 윈도우 실행 파일형 웜이 다시 증가하게 되었다.[4]

기능

브이비스크립트의 카테고리 별 기능은 배열 처리, 과제, 표현식, 상수/리터럴, 제어흐름, 날짜/시간, 선언, 오류처리, 문자열 서식지정, 입출력, 연산자, 문자열 등이 있다.[8] 윈도우 스크립트 호스트(Windows Script Host) 에서 호스팅할 때 Visual Basic 6.0 에서는 사용할 수 없다. 이 기능에는 다음과 같은 간편한 액세스가 포함된다.

  • 이름이 지정되고 이름이 지정되지 않은 명령 줄 인수
  • 런타임에 정의된 텍스트의 런타임 실행 방법 : 평가 및 실행
  • 원격 컴퓨터에서 스크립트를 실행하는 방법 : WMI (Windows Management Instrumentation)널리 알려진 언어를 사용하여 브이비스크립트 엔진을 다른 응용 프로그램에 포함한다.

추가 기능

파일 시스템 관리, 파일 수정 및 스트리밍 텍스트 작업은 스트립팅 런타임 라이브러리(Scripting Runtime Library)로 구현된다. ActiveX 기술을 통해 기능을 추가 할 수도 있다. 프로그래머는 COM (ActiveX) 모듈을 통해 확장성을 활용하여 스크립트 호스트와 브이비스크립트에 필수 기능 또는 원하는 기능을 장착할 수 있다.[9]

각주

  1. VBScript 마이크로소프트 공식 홈페이지 - https://docs.microsoft.com/en-us/previous-versions//t0aew7h6(v=vs.85)
  2. VB스크립트 위키백과 - https://ko.wikipedia.org/wiki/VB%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
  3. sssoh, 〈프로그래밍 언어의 종류와 특징〉, 《티스토리》, 2012-01-17
  4. 4.0 4.1 차민석, 〈악성스크립트의 종류와 역사 (2)〉, 《안랩》, 2002-02-07
  5. 오양, 〈스크립트〉, 《네이버 블로그》, 2005-02-21
  6. 6.0 6.1 김자까, 〈스크립트 언어(Script Language)란 무엇인가?〉, 《네이버 블로그》, 2019-11-18
  7. VBScript 위키백과 - https://en.wikipedia.org/wiki/VBScript
  8. VBScript Features 마이크로소프트 문서 도구 - https://docs.microsoft.com/en-us/previous-versions//273zc69c(v=vs.85)
  9. VBScript VBcript 위키백과 - https://en.wikipedia.org/wiki/VBScript VBcript

참고자료

같이 보기


  검수요청.png검수요청.png 이 브이비스크립트 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.