summarise the following information in short key points :

Program Threats
 There are many common threats to modern systems. Only a few are discussed here.
Trojan Horse

16

 A Trojan horse is a program that secretly performs some maliciousness in addition to its
visible actions.  Some Trojan horses are deliberately written as such, and others are the result of
legitimate programs that have become infected with viruses,  One dangerous opening for Trojan horses is long search paths, and in particular paths
which include the current directory ( "." ) as part of the path. If a dangerous program
having the same name as a legitimate program ( or a common mis-spelling, such as "sl"
instead of "ls" ) is placed anywhere on the path, then an unsuspecting user may be fooled
into running the wrong program by mistake.  Another classic Trojan Horse is a login emulator, which records a users account name
and password, issues a "password incorrect" message, and then logs off the system. The
user then tries again (with a proper login prompt), logs in successfully, and doesn't realize
that their information has been stolen.  Two solutions to Trojan Horses are to have the system print usage statistics on logouts,
and to require the typing of non-trappable key sequences such as Control-Alt-Delete in
order to log in. (This is why modern Windows systems require the Control-Alt-Delete
sequence to commence logging in, which cannot be emulated or caught by ordinary
programs. I.e. that key sequence always transfers control over to the operating system. )  Spyware is a version of a Trojan Horse that is often included in "free" software
downloaded off the Internet. Spyware programs generate pop-up browser windows, and
may also accumulate information about the user and deliver it to some central site. (This
is an example of covert channels, in which surreptitious communications occur.) Another
common task of spyware is to send out spam e-mail messages, which then purportedly
come from the infected user.
Trap Door
 A Trap Door is when a designer or a programmer ( or hacker ) deliberately inserts a
security hole that they can use later to access the system.  Because of the possibility of trap doors, once a system has been in an untrustworthy state,
that system can never be trusted again. Even the backup tapes may contain a copy of
some cleverly hidden back door.  A clever trap door could be inserted into a compiler, so that any programs compiled with
that compiler would contain a security hole. This is especially dangerous, because
inspection of the code being compiled would not reveal any problems.
Logic Bomb
 A Logic Bomb is code that is not designed to cause havoc all the time, but only when a
certain set of circumstances occurs, such as when a particular date or time is reached or
some other noticeable event.
Stack and Buffer Overflow

17

 This is a classic method of attack, which exploits bugs in system code that allows buffers
to overflow. Consider what happens in the following code, for example, if argv[ 1 ]
exceeds 256 characters:
o The strcpy command will overflow the buffer, overwriting adjacent areas of
memory.
o ( The problem could be avoided using strncpy, with a limit of 255 characters
copied plus room for the null byte. )

#include
#define BUFFER\_SIZE 256
int main( int argc, char \* argv[ ] )
{
char buffer[ BUFFER\_SIZE ];
if( argc < 2 )
return -1;
else {
strcpy( buffer, argv[ 1 ] );
return 0;
}
}
Figure - C program with buffer-overflow condition.  So how does overflowing the buffer cause a security breach? Well the first step is to
understand the structure of the stack in memory:
o The "bottom" of the stack is actually at a high memory address, and the stack
grows towards lower addresses.
o However the address of an array is the lowest address of the array, and higher
array elements extend to higher addresses. ( I.e. an array "grows" towards the
bottom of the stack.
o In particular, writing past the top of an array, as occurs when a buffer overflows
with too much input data, can eventually overwrite the return address, effectively
changing where the program jumps to when it returns.

18

Figure - The layout for a typical stack frame.  Now that we know how to change where the program returns to by overflowing the
buffer, the second step is to insert some nefarious code, and then get the program to jump
to our inserted code.  Our only opportunity to enter code is via the input into the buffer, which means there isn't
room for very much. One of the simplest and most obvious approaches is to insert the
code for "exec (/bin/sh)". To do this requires compiling a program that contains this
instruction, and then using an assembler or debugging tool to extract the minimum extent
that includes the necessary instructions.  The bad code is then padded with as many extra bytes as are needed to overflow the
buffer to the correct extent, and the address of the buffer inserted into the return address
location. (Note, however, that neither the bad code nor the padding can contain null
bytes, which would terminate the strcpy.)  The resulting block of information is provided as "input", copied into the buffer by the
original program, and then the return statement causes control to jump to the location of
the buffer and start executing the code to launch a shell.

19

Figure : Hypothetical stack frame for (a) before and (b) after.  Fortunately modern hardware now includes a bit in the page tables to mark certain pages
as non-executable. In this case the buffer-overflow attack would work up to a point, but
as soon as it "returns" to an address in the data space and tries executing statements there,
an exception would be thrown crashing the program.
Viruses
 A virus is a fragment of code embedded in an otherwise legitimate program, designed to
replicate itself ( by infecting other programs ), and ( eventually ) wreaking havoc.  Viruses are more likely to infect PCs than UNIX or other multi-user systems, because
programs in the latter systems have limited authority to modify other programs or to
access critical system structures ( such as the boot block. )  Viruses are delivered to systems in a virus dropper, usually some form of a Trojan Horse,
and usually via e-mail or unsafe downloads.  Viruses take many forms (see below.) Figure shows typical operation of a boot sector
virus:

20

Figure - A boot-sector computer virus.

21
 Some of the forms of viruses include:
 File - A file virus attaches itself to an executable file, causing it to run the virus
code first and then jump to the start of the original program. These viruses are
termed parasitic, because they do not leave any new files on the system, and the
original program is still fully functional.
 Boot - A boot virus occupies the boot sector, and runs before the OS is loaded.
These are also known as memory viruses, because in operation they reside in
memory, and do not appear in the file system.
 Macro - These viruses exist as a macro (script) that is run automatically by
certain macro-capable programs such as MS Word or Excel. These viruses can
exist in word processing documents or spreadsheet files.
 Source code viruses look for source code and infect it in order to spread.
 Polymorphic viruses change every time they spread - Not their underlying
functionality, but just their signature, by which virus checkers recognize them.
 Encrypted viruses travel in encrypted form to escape detection. In practice they
are self-decrypting, which then allows them to infect other files.
 Stealth viruses try to avoid detection by modifying parts of the system that could
be used to detect it. For example the read ( ) system call could be modified so that
if an infected file is read the infected part gets skipped and the reader would see
the original unadulterated file.
 Tunneling viruses attempt to avoid detection by inserting themselves into the
interrupt handler chain, or into device drivers.
 Multipartite viruses attack multiple parts of the system, such as files, boot sector,
and memory.
 Armored viruses are coded to make them hard for anti-virus researchers to
decode and understand. In addition many files associated with viruses are hidden,
protected, or given innocuous looking names such as "...".  In 2004 a virus exploited three bugs in Microsoft products to infect hundreds of Windows
servers ( including many trusted sites ) running Microsoft Internet Information Server,
which in turn infected any Microsoft Internet Explorer web browser that visited any of
the infected server sites. One of the back-door programs it installed was a keystroke
logger, which records user’s keystrokes, including passwords and other sensitive
information.  There is some debate in the computing community as to whether a monoculture, in
which nearly all systems run the same hardware, operating system, and applications,
increases the threat of viruses and the potential for harm caused by them.
다음 정보를 간략하게 요약하면 다음과 같습니다:프로그램 위협 최신 시스템에는 많은 일반적인 위협이 있습니다. 여기서는 몇 가지에 대해서만 설명합니다.트로이 목마16 트로이 목마는 눈에 보이는 동작 외에도 은밀하게 악의적인악성 행위를 은밀하게 수행하는 프로그램입니다.  일부 트로이 목마는 의도적으로 그렇게 작성되었으며, 다른 트로이 목마는 다음과 같은 결과입니다.바이러스에 감염된 합법적 인 프로그램,  트로이 목마에 대한 한 가지 위험한 개방은 긴 검색 경로, 특히 경로입니다.경로의 일부로 현재 디렉토리(".")를 포함하는 경로입니다. 위험한 프로그램이의 이름이 합법적인 프로그램과 같거나(또는 "ls" 대신 "sl"과 같은 일반적인 잘못된 철자)와 같은 일반적인 잘못된 철자)를 경로의 아무 곳에나 배치하면 의심하지 않는 사용자가 실수로 잘못된 프로그램을 실행하도록 속일 수 있습니다.실수로 잘못된 프로그램을 실행할 수 있습니다.  또 다른 고전적인 트로이 목마는 로그인 에뮬레이터로, 사용자의 계정 이름과 비밀번호를 기록하고및 비밀번호를 기록하고 "비밀번호가 잘못되었습니다"라는 메시지를 표시한 다음 시스템에서 로그오프합니다. 사용자가사용자가 (적절한 로그인 프롬프트와 함께) 다시 시도하여 성공적으로 로그인한 후 자신의 정보가 도용되었다는 사실을 깨닫지 못합니다.자신의 정보가 도난당했다는 사실을 깨닫지 못합니다.  트로이 목마에 대한 두 가지 해결책은 시스템에서 로그아웃 시 사용 통계를 인쇄하도록 하는 것입니다,그리고 로그인할 때 Control-Alt-Delete와 같은 트래핑할 수 없는 키 시퀀스를 입력하도록 하는 것입니다.와 같은 추적할 수 없는 키 시퀀스를 입력하도록 하는 것입니다. (이 때문에 최신 Windows 시스템에서는 로그인을 시작하기 위해 Control-Alt-Delete시퀀스를 입력해야 로그인이 시작되는데, 이 시퀀스는 일반 프로그램에서 에뮬레이션하거나 포착할 수 없습니다.프로그램에서 에뮬레이션하거나 포착할 수 없습니다. 즉, 이 키 시퀀스는 항상 운영 체제로 제어권을 이전합니다. )  스파이웨어는 인터넷에서 다운로드하는 "무료" 소프트웨어에 종종 포함되는 트로이 목마 버전입니다.트로이 목마 버전입니다. 스파이웨어 프로그램은 팝업 브라우저 창을 생성하고사용자에 대한 정보를 축적하여 일부 중앙 사이트로 전달할 수도 있습니다. (이은 은밀한 통신이 이루어지는 은밀한 채널의 예입니다.) 또 다른스파이웨어의 일반적인 작업은 스팸 이메일 메시지를 보내는 것입니다.스팸 이메일 메시지를 보내는 것입니다.트랩 도어 트랩 도어는 디자이너나 프로그래머(또는 해커)가 의도적으로 보안 허점을 삽입하여나중에 시스템에 액세스하는 데 사용할 수 있는 보안 구멍을 의도적으로 삽입하는 것을 말합니다.  트랩 도어의 가능성 때문에 시스템이 신뢰할 수 없는 상태가 되면,그 시스템은 다시는 신뢰할 수 없습니다. 심지어 백업 테이프에도 교묘하게 숨겨진교묘하게 숨겨진 백도어가 있을 수 있습니다.  컴파일러에 교묘한 트랩 도어가 삽입되어 해당 컴파일러로 컴파일된 모든 프로그램에컴파일된 모든 프로그램에 보안 구멍이 생길 수 있습니다. 이는 특히 위험합니다.컴파일되는 코드를 검사해도 문제가 발견되지 않기 때문입니다.논리 폭탄 논리 폭탄은 항상 혼란을 일으키도록 설계된 코드가 아니라 특정 상황이 발생할 때만특정 날짜나 시간에 도달했을 때와 같은 특정 상황이 발생하거나다른 눈에 띄는 이벤트.스택 및 버퍼 오버플로17 이것은 버퍼가 넘치도록 허용하는 시스템 코드의 버그를 악용하는 고전적인 공격 방법입니다.버그를 악용합니다. 예를 들어 다음 코드에서 argv[ 1 ]이 256자를 초과하면 어떤 일이 발생하는지 생각해 보세요.가 256자를 초과하는 경우를 예로 들어보겠습니다:o strcpy 명령은 버퍼를 오버플로하여 인접한 메모리 영역을 덮어씁니다.메모리 영역을 덮어씁니다.o (이 문제는 255자로 제한되는 strncpy를 사용하면 피할 수 있습니다.를 복사하고 널 바이트를 위한 공간을 확보하면 이 문제를 피할 수 있습니다. )#포함#정의 BUFFER\_SIZE 256int main( int argc, char \* argv[ ] ){char buffer[ BUFFER\_SIZE ];if( argc < 2 )return -1;else {strcpy( buffer, argv[ 1 ] );return 0;}}그림 - 버퍼 오버플로 조건이 있는 C 프로그램.  그렇다면 버퍼 오버플로는 어떻게 보안 침해를 유발할까요? 첫 번째 단계는메모리 스택의 구조를 이해하는 것입니다:o 스택의 "맨 아래"는 실제로 높은 메모리 주소에 있으며 스택은은 낮은 주소를 향해 증가합니다.그러나 배열의 주소는 배열의 가장 낮은 주소이며, 그보다 높은배열 요소는 더 높은 주소로 확장됩니다. (즉, 배열은 스택의 맨 아래를 향해스택의 맨 아래를 향해 "성장"합니다.특히 버퍼가 너무 많은 입력 데이터로 넘칠 때 발생하는 것처럼 배열의 맨 위를 지나서 쓰면버퍼가 넘칠 때 발생하는 것처럼 배열의 맨 위를 지나서 쓰면 결국 반환 주소를 덮어쓸 수 있습니다.프로그램이 반환할 때 점프하는 위치를 변경할 수 있습니다.18그림 - 일반적인 스택 프레임의 레이아웃.  이제 버퍼를 오버플로하여 프로그램이 반환하는 위치를 변경하는 방법을 알았으니버퍼를 오버플로하여 프로그램이 반환되는 위치를 변경하는 방법을 알았으니, 두 번째 단계는 악의적인 코드를 삽입한 다음 프로그램이 삽입된 코드로삽입한 코드로 이동하도록 하는 것입니다.  코드를 입력할 수 있는 유일한 기회는 버퍼에 입력하는 것뿐입니다.공간이 별로 없습니다. 가장 간단하고 확실한 접근 방식 중 하나는 "실행"을 위한코드를 삽입하는 것입니다. 이렇게 하려면 이 명령어가 포함된 프로그램을 컴파일한 다음명령어가 포함된 프로그램을 컴파일한 다음, 어셈블러 또는 디버깅 도구를 사용하여 필요한 명령어가 포함된 최소한의 범위만를 추출해야 합니다.  그런 다음 잘못된 코드에 버퍼를 오버플로하는 데 필요한 만큼의 여분의 바이트를 추가하고버퍼를 오버플로하는 데 필요한 만큼의 추가 바이트를 추가하고 반환 주소에 삽입된 버퍼의 주소는위치에 삽입됩니다. (참고, h