c# pdf library free : View pdf metadata Library software component .net winforms html mvc thesis_v1.62-part220

2.2 Propagation and payload execution
There are several ways infected PDF documents can be distributed. The most widely spread 
method entails attaching the malicious file to an email that is in some way enticing to the 
victim. Another possibility is to host the file on a Web page and deliver it when a victim 
visits the page. While not prevalent among the samples found in the wild, it is in fact also 
possible for a malicious document to execute it's payload without the victim ever opening 
the file. 
2.2.1 Emails
In most cases, author of a malicious document relies on some form of social engineering to 
manipulate the victim into opening the infected file. Depending on the amount of 
premeditation that goes into creating such document, it is possible to identify two distinct 
techniques – email spam and targeted attacks.
Use of mass mail campaigns with PDF attachments that entice the user is an ongoing 
issue. The attack relies on the victim viewing the document with a vulnerable viewer, thus 
executing the embedded payload. Therefore, the content of such messages is a key to its 
success and needs to be as convincing as possible. It usually revolves around current news 
headlines or political, religious and other controversial subjects. A common technique that 
has been used a lot in recent years is to copy the content of recent major news articles from 
the Web and spoof the sender's name to make it seem the mail originates from the author of 
the article. Attached PDF files often have legitimate content, so as not alert the user, but they 
also carry a payload that is dropped upon opening of the file. 
Targeted attacks are second, more dangerous form of attacks. They involve  use of 
PDF files and social engineering techniques to target a specific organization or individual. 
Authors of such attack invest significant amount of time into researching and gathering 
information about the victim in order to come up with a document that is  plausible and 
seems to originate from a legitimate source. Targeted attacks are much more rare then simple 
spam mails, due to the effort and planning that is necessary to execute them. On the other 
hand, they tend to be much more sophisticated and stealthy, with the victim often never 
realizing their machine has been infected.
2.2.2 Drive-by downloads
Another way to use malicious PDF documents to compromise victim computers is to host 
such files on a Web page. Unlike the email propagation methods, the victim doesn't need to 
actively open the document. Instead a web browser plug-in automatically launches the file 
and the infection process happens silently in the background. In most cases, the Web page 
contains JavaScript code [27] that gathers information about the visitor's machine and 
chooses one of several different exploits based on that information. These automated attacks 
are in most cases carried out by web exploit kits – packs containing malicious programs, that 
are available for purchase on the black market.
View pdf metadata - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
edit pdf metadata acrobat; remove metadata from pdf online
View pdf metadata - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
pdf metadata editor online; add metadata to pdf file
2.2.3 COM objects
Most malware authors rely on methods described in sections 3.1.1 and 3.1.2 to get the victims 
to open the infected document. However, it should be noted that on Windows operating 
systems with Adobe Reader installed, it is possible for the malicious payload of PDF 
documents to be executed without any user interaction at all. As a part of it's installation 
package, Adobe Reader installs Windows Shell Explorer Extension and iFilter, which both 
allow Windows components to read PDF files without any user input.
Column Handler Shell Extension is a COM [28] object that allows Windows Explorer 
to read and process PDF documents (for example to render a thumbnail preview of the 
document).  Column handlers are programs that provide Windows Explorer additional data 
to display. When a PDF file is listed in a window, the column handler extension is called to 
read the PDF document and extract all the necessary information (such as Title, Author, etc.). 
This however can cause the exploit to be triggered and the malicious code to be executed 
inside the Windows Explorer process.
iFilter is a COM object that extends Windows Indexing Service and provides it with 
the ability to read and index PDF files. When a PDF document is found, the Windows 
Indexing Service calls the iFilter, which in turn loads the Acrobat PDF parser, thus executing 
the payload inside the PDF document. 
2.3 Adobe Reader vulnerabilities
PDF can be in many ways considered a container format – 3D data, pictures, multimedia 
files, Flash [29] or JavaScript can all be embedded within a document. Documentation for 
vulnerability CVE-2007-5020, which entailed taking advantage of a flaw related to getmail() 
function, was released in September 2007 and since then many different exploits appeared 
and continue to be used with varying degrees of success. The exploits can broadly classified 
into three categories – JavaScript based, Flash based and others.
JavaScript based exploits are often used in malicious PDF documents. Support for 
JavaScript programming was added in PDF 1.3, with many JavaScript functions being 
available in the form of APIs. JavaScript based exploits represent a significant portion of all 
PDF exploits and disabling support in PDF reader software is an effective way to neutralize 
Embedded Flash objects have been the prime source of PDF exploits in recent 
months. Currently, five out of last six published vulnerabilities revolve around flaws in 
Adobe Flash, with all five being ranked as critical. In some cases, JavaScript is used to help 
set up or trigger the exploit.
2.3.1 Most frequently exploited vulnerabilities
Publicly known information security vulnerabilities are cataloged in CVE (Common 
Vulnerabilities and Exposures) [30] dictionary. Currently, thirty vulnerabilities related to PDF 
files can be found within the dictionary, each of them being exploited in the wild with 
varying degrees of frequency and success. This section lists all commonly exploited PDF 
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
View PDF in WPF. Annotate PDF in WPF. Export PDF in to PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
search pdf metadata; remove metadata from pdf file
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Offer professional PDF document metadata editing APIs, using which VB.NET developers can redact, delete, view and save PDF metadata. PDF Document Protection.
pdf metadata; view pdf metadata
CVE-2008-0655 was released in early February 2008. The threat targets Acrobat Reader and 
Adobe Acrobat 8.1.1 and earlier versions. It carries high level of risk, since successful exploit 
allows a remote code execution and subsequent remote control of victim machine. The 
exploit involves a specially crafted PDF file, which contains a JavaScript that sprays the heap 
with malicious shellcode and then executes it using malformed Collab.collectEmailInfo() call. 
Example of code responsible for stack overflow is following:
var overflow = unescape("%%u0a0a%u0a0a");
while (overflow.length < 0x4000)
overflow += overflow;
this.collabStore = Collab.collectEmailInfo({subj: "",msg: overflow});
CVE-2008-2992 was originally published in April 2008, this vulnerability affects Adobe 
Reader and Adobe Acrobat 8.12 and earlier. It is another stack-based buffer overflow that 
allows attackers to execute arbitrary code on the victim machine. The vulnerability occurs 
due to a boundary error when parsing a malformed util.printf() JavaScript call. Following is 
an example of the JavaScript code that triggers the exploit:
var badnumber = "12999999999999999999";
for (i = 0; i < 276; i++)
badnumber += "8";
util.printf("%45000f, badnumber);
CVE-2009-0927 was initially published in March 2009. The vulnerable versions are  Adobe 
Reader and Adobe Acrobat 7 prior to version 7.1.1, Adobe Reader and Adobe Acrobat 8 prior 
to version 8.1.4 and Adobe Reader and Adobe Acrobat 9.0.0.  It is another JavaScript based 
exploit, which uses a specially crafted PDF file to spray the heap with malicious shellcode 
and cause a stack-based buffer overflow via the Collab object's getIcon() method. The end 
result is remote code execution and consequent remote control of the infected machine. 
Following is an example of a JavaScript responsible for the buffer overflow:
var exploit = unescape("%09"); 
while (exploit .length  < 0x4000)
exploit += exploit; 
exploit = "N." + exploit; 
CVE-2009-4324 is yet another JavaScript based vulnerability that had been widely exploited 
in the wild during December 2009, until a patch was released in January 2010. It targets 
Adobe Reader and Adobe Acrobat versions 9.x before 9.3, and versions 8.x before 8.2 on 
C# PDF Library SDK to view, edit, convert, process PDF file for C#
RasterEdge WPF PDF Viewer provides C# users abilities to view, annotate, convert and create PDF in WPF application. C#.NET: Edit PDF Metadata.
c# read pdf metadata; batch pdf metadata
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
View PDF in WPF. Annotate PDF in WPF. Export PDF in to PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
change pdf metadata creation date; modify pdf metadata
Windows and Mac OS X. The exploit itself takes advantage of a flaw in newPlayer() method 
of doc.media object. Specifically, the bug is triggered by supplying a null argument to the 
newPlayer() method and using util.printd function to allocate a new object (of equal size) 
where the the media object should be. The code that triggers the exploit may look like this:
var exploit1 = "0d0c0d0c0d0c0d0c41706d7a554b4d67794f6f4d585a764"
var exploit2 = "f4c566fb48584249666d5666f625a456775686a46525871"
var exploit3 = "4e79617a614878756b754d4c57647a58704d4644624b4f"
try {this.media.newPlayer(null);} catch(e) {} 
util.printd(exploit1 + exploit2 + exploit3, new Date());
CVE-2010-0188 was published in February 2010. It targets a vulnerability in Adobe Reader 
and Acrobat 8.x before 8.2.1 and 9.x before 9.3.1. The exploit takes advantage of the fact that 
Adobe used outdated version of libtiff library (a library used to read, write and manipulate 
with TIFF images), which is susceptible to exploit of vulnerability CVE-2006-3459. The 
malicious PDF file contains a base64 encoded TIFF image and an XFA form with embedded 
JavaScript. The JavaScript sprays the heap with shellcode and then performs a set call to the 
ImageEdit element of AcroForm.api plug-in. The call uses the TIFF image combined with an 
invalid parameter, thus triggering the exploit.
CVE-2010-2883 was disclosed to public in September 2010. The vulnerable versions of Adobe 
Reader and Adobe acrobat are 9.x prior to 9.4, and 8.x prior to 8.2.5 on Windows and Mac OS 
X. The vulnerability lies in the CoolType.dll library installed by Adobe Reader and Acrobat. 
Once the reader software initialized CoolType Typography Engine, a function called strcat 
(which is known to be insecure) is used to overwrite the stack. The exploit is then triggered 
via library icucnv36.dll, which redirects application flow control. CVE-2010-2883 is one of 
few critical vulnerabilities that is capable of bypassing techniques that prevent stack 
overflow and heap overflow (Data Execution Prevention and Address Space Layout 
Randomization) and does not rely on use of JavaScript or Adobe Flash.
CVE-2010-3654 was released in October 2010. The vulnerability exists in the authplay.dll 
component that comes with Adobe Reader and Adobe Acrobat 9.4 and earlier 9.x versions for 
Windows, Mac OS X and UNIX operating systems. The vulnerability can be exploited by a 
specially crafted PDF file, which contains JavaScript designed to spray the heap with 
malicious shellcode and a SWF file that causes type confusion in ActionScript bytecode 
language, which triggers the exploit.
CVE-2011-0609 was discovered and published in March 2011 and affects the authplay.dll 
component shipped with Adobe Reader and Acrobat 9.x through 9.4.2 and 10.x through 
10.0.1 on Windows and Mac OS X. In this case, the malicious PDF file contains two SWF files. 
The first one sprays the heap with shellcode through AVM2 (ActionScript Virtual Machine 
version 2), retrieves the second SWF file from a hex encoded string object and then executes 
it. The second file then takes advantage of the fact that the AVM2 does not check bytecode 
streams properly before executing them. This leads to execution of memory previously 
initialized by the heap spray, thus triggering the exploit.
C# WPF PDF Viewer SDK to view PDF document in C#.NET
WPF Viewer & Editor. WPF: View PDF. WPF: Annotate PDF. WPF: Export PDF. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Watermark: Add Watermark to PDF
view pdf metadata in explorer; bulk edit pdf metadata
How to C#: Modify Image Metadata (tag)
C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET VB.NET How-to, VB.NET PDF, VB.NET Word, VB VB.NET Barcode Read, VB.NET Barcode Generator, view less.
read pdf metadata java; clean pdf metadata
CVE-2011-0611 is another vulnerability involving authplay.dll library. It was released to 
public in April 2011 and the affected versions of Adobe Reader are 9.x before 9.4.4 and 10.x 
through 10.0.1 on Windows, 9.x before 9.4.4 and 10.x before 10.0.3 on Mac OS X. Vulnerable 
versions of Adobe Acrobat include 9.x before 9.4.4 and 10.x before 10.0.3 on Windows and 
Mac OS X. The exploitation process is quite similar to the one used to exploit CVE-2011-0609. 
The infected PDF file contains a SWF file that sprays the heap with malicious shellcode and 
retrieves a second SWF file from hex encoded string object. The second SWF contains code 
that crashes Adobe Flash and overwrites pointers in memory. This triggers the exploit and 
results in execution of the malicious shellcode. CVE-2011-0611 is currently the most 
frequently exploited PDF vulnerability.
CVE-2011-2462 is a vulnerability found in the Universal 3D (U3D) component shipped with 
Adobe Reader and Adobe Acrobat. Affected versions are 10.1.1 and earlier on Windows and 
Mac OS X, and Adobe Reader 9.x through 9.4.6 on UNIX systems. It was discovered and 
published in December 2011. The vulnerability can be exploited by a specially crafted PDF 
file. The process involves spraying the heap via JavaScript and then rendering the malformed 
U3D object, which causes memory corruption and triggers the vulnerability.
2.4 PDF obfuscation techniques
One of the main contributing factors of high popularity of PDF files among authors of 
malware is the fact that the format provides many ways and techniques to obfuscate the 
contents of a file. This is further aided by less than strict PDF reader implementations that 
often parse documents correctly even though the file contains severe deviations from the 
format specification, thus providing malware authors with even more options. It is quite easy 
to design and implement an effective obfuscation of PDF files and the purpose of employing 
such evasion techniques is twofold. Not only it makes manual analysis of contents of 
suspicious PDF files much more difficult and time consuming, but it also renders anti-virus 
scanners ineffective. Additionally, since many exploits rely on use of JavaScript, all 
obfuscation techniques specific to JavaScript also apply.
2.4.1 Header
According to the PDF specification, a PDF file should start with a header of a form %PDF-1.x 
(where x is a number that identifies the version of PDF) on a single line.  However, Adobe 
Reader will parse the file correctly as long as the header is anywhere within the first 1024 
bytes of the file. Moreover, the last character can be omitted and the header is still 
recognized. The goal of such non-conforming header is to confuse anti-virus software so that 
the file is not analyzed as a PDF document.
2.4.2 String objects
Strings inside a PDF often store JavaScript scripts or other malicious code. String objects can 
be represented in two distinct ways, both of which can be used by malware authors to add a 
C# TIFF: TIFF Metadata Editor, How to Write & Read TIFF Metadata
C#.NET. Allow Users to Read and Edit Metadata Stored in Tiff Image in C#.NET Application. C# Overview - View and Edit TIFF Metadata.
change pdf metadata; pdf metadata extract
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Document and metadata. All object data. File attachment. Flatten visible layers. VB.NET Demo Code to Optimize An Exist PDF File in Visual C#.NET Project.
preview edit pdf metadata; adding metadata to pdf files
layer of obfuscation to their scripts. Strings enclosed in parentheses can be split over many 
lines by terminating each line with a backslash character. Additionally, each character can be 
represented by it's octal value preceded by a backslash. Strings can also be as hexadecimal 
characters (optionally separated by white space) enclosed in brackets. For example:
/JS (app.alert({cMsg: 'Hello World!'});)
/JS (\97\112\122.\97\108\145\114t({\
c\77sg: 'H\145llo \
/JS <6170702E616C657274287B634D73673A202748656C6C6F20        576F 72 6C 64     21
27 7D 29 3C>
are all equivalent and valid strings.
2.4.3 Name objects
Name objects can contain hexadecimal representation of alphanumeric characters (ie. #61 is 
equivalent to character a). Any number of characters can be represented this way. This can be 
used to disguise important key entries in dictionaries – such as /JavaScript, /JS, /RichMedia 
and /OpenAction. For instance name object /#52#69#63#68#4D#65#64#69#61 is equivalent to 
name object /RichMedia.
2.4.4 Encryption
The contents of PDF files can be encrypted using AES or RC4 algorithms. Such encryption 
doesn't change the structure of the file itself. That means it is still possible to see all the 
indirect objects and their corresponding attributes, but all the strings and data streams are 
encrypted. The purpose of encryption within PDF documents is twofold. Firstly, it can be 
used to prevent any user that doesn't know the password from viewing the contents of the 
document (this is called user password). And secondly, encryption can be used to prevent 
printing or modification of the document (owner password). Using a password to encrypt 
malicious documents would be counter productive from malware author's point of view, 
because the user would get alerted by unexpected password dialog window. However, 
empty string is also considered a valid password. PDF documents encrypted using empty 
string as an owner password can be viewed  in any reader software without any ill side 
effects. This provides malware authors with another layer of obfuscation, because the content 
of a suspicious PDF file needs to be decrypted before it can be analyzed.
2.4.5 Filters
PDF format allows data inside stream objects to be encoded and compressed using filters. 
Very common choice among malware authors is to use the FlateDecode filter, which 
decompresses data encoded using the zlib/deflate compression method. It is also possible to 
apply several filters in a cascade (ie. /Filter [/FlateDecode /Ascii85Decode represents a data 
stream that is encoded in ASCII base-85 representation and then compressed with 
zlip/deflate method.). Moreover, when a hexadecimal representation is used, it can contain 
arbitrary number of white spaces, therefore producing varying sequences of bytes when 
compressed by zlib/deflate method.
2.4.6 Code fragmenting
Malware authors often take advantage of the fact that it is possible to split up JavaScript into 
multiple statements and functions. The fragments can then be stored inside several indirect 
objects and then concatenated together. One special case is the use of name dictionaries. A 
name dictionary is used to reference objects by a name instead of object reference. All actions 
within the name dictionary are also executed when a PDF document is opened, in order to 
define JavaScript functions that can later be used by other scripts present in the document. 
This also ensures that the malicious script fragments are gathered and the JavaScript is 
executed as a whole. Additionally, it is possible to compress or encrypt each fragment 
separately, which helps the file evade detection by AV scanners and complicates manual 
2.4.7 Object streams
Object stream is a special type of indirect object (denoted /ObjStm) that contains one or more 
other indirect objects. Any indirect object may be embedded inside an object stream (with the 
exception of other object streams) and as such can contain JavaScript and other potentially 
malicious content. Additionally, filters may also be applied to object streams to encode and 
compress their contents.
2.4.8 JavaScript obfuscation
The implementation of JavaScript engine within Adobe PDF reader is very similar to the one 
found in web browsers. As such, all the detection evasion techniques commonly used to 
obfuscate  malicious code in JavaScript-based malware also apply to JavaScript in PDF. Since 
mere presence of obfuscated JavaScript within a PDF document is enough to consider the file 
highly suspicious, detailed analysis and description of these generic methods are outside of 
the scope of this work. In general, the most common techniques include:
• Regular expressions: can be used to used to retrieve and put together code hidden 
inside a long string. Regular expressions can produce fairly complex and efficient 
obfuscation, especially when combined with other techniques.
• Unescape and replace functions: unescape() function is used to decode hexadecimal 
representation of raw binary data. This can be used as a method of obfuscation when 
the decoded data are an ASCII string. Replace() function searches for a substring or 
regular expression within a string and then replaces any matched substring with a 
new substring. These two functions are often used in conjunction to help obfuscate 
malicious code.
• Eval function: eval() is a global function that allows a string to be evaluated as if it was 
an expression. Additionally, if the argument is one or several Javascript statements, 
eval() executes them. Typically used in combination with regular expressions and 
code splitting, eval() is one of the most common and effective ways to obfuscate 
malicious JavaScript code. 
2.5 PDF JavaScript
Adobe's implementation of the JavaScript engine also offers several specific functions that 
allow retrieval of data from various indirect objects inside a PDF file. The purpose of these 
API functions is to provide access to the document's information dictionary (stores metadata, 
such as title, author, subject, keywords, etc.), as well data stored inside various widgets. 
However, this functionality can be exploited by malware authors, who can hide encrypted 
JavaScript or shellcode inside these indirect objects. The malicious code can then be retrieved 
using appropriate indirect object references. The benefit of such approach is the fact that all 
visible JavaScript appears to be legitimate and all referenced objects must be examined in 
order to determine whether the JavaScript is in fact harmful. Examples of API functions 
previously used by malware authors are following sections (3.3.1 to 3.3.3).
2.5.1 Function getField
getField() function provides access to data stored in the field object of specified widget. For 
instance, following example inserts the current date into a text field:
function date() {
var field = this.getField("Date");
field.value = util.printd("dd mmmm yyyy",new Date());
The field object can be used to store malicious JavaScript. For instance, document can contain 
following object:
/10 0 obj
/Type Annot
/Subtype /Widget
/DV (%61%70%70%2E%61%6C%65%72%74%20%28%22%48%65%6C%6C
/T (Harmful)
Entries value (/V) and default value (/DV) both contain JavaScript obfuscated as escaped 
characters. Field name entry (/T) denotes the field name under which this object can be 
referenced. The following JavaScript code then shall, after decoding hexadecimal 
representation into raw data, execute the code stored inside the object:
In this case, the effect is simple pop-up alert box with text "Hello World!" in it. However, the 
JavaScript can be substituted with any malicious code, which can be executed or stored 
inside a variable for later use. 
2.5.2 Function this.info
Document information  dictionary is a dictionary object stored inside Info entry in the trailer 
of a PDF file. It contains various metadata, such as title, author, subject, keywords, producer, 
creator and creation date. Each entry may also be used to store arbitrary data and can be 
accessed via JavaScript API function this.info(). 
2.5.3 Function getAnnot
API function Screen.App.GetAnnot() operates in very similar fashion to getField() and can be 
used to access the data stored in screen annotation object (ScreenAnnot), which specifies a 
region of a page where media clips shall be played.
Chapter 3
PDF online viewers and analysis tools
In this chapter, we first discuss what options are available when it comes to viewing PDF 
files in web browser environment. Next, we examine existing tools for PDF document 
analysis. The goal is to evaluate their features and capabilities and discuss advantages and 
disadvantages they offer when performing static analysis of a malicious PDF document.
3.1 Online PDF viewers
The ability to view PDF file inside web browsers has undergone significant development in 
recent years. In general, there are two methods to render a PDF document in a browser 
3.1.1 Browser plug-ins
The first is to use a plug-in for one of the native reader applications. The most prominent 
examples are plug-ins for Adobe Reader and Foxit Reader [31]. Most of the popular web 
browsers (Internet Explorer, Mozilla Firefox 18 or older, Safari, Opera) ship with Adobe PDF 
Reader pre-installed and set as a default PDF viewer. From security standpoint, this 
approach has the obvious disadvantage of introducing all the vulnerabilities in Adobe 
Reader software to the browser. Because vast percentage of malicious samples found in the 
wild targets specifically Adobe Reader due to it's popularity, Mozilla Firefox replaced the 
plug-in with new built-in browser based purely on web technologies called PDF.js [32].
PDF.js was released in February 2013 as a part of Firefox 19. It currently stands in a 
unique position among PDF browsers as it is written entirely in JavaScript and HTML5 (it is 
not a browser plug-in), released as open source and the development is community driven. 
When displaying a document, PDF.js decodes and extracts it's contents and then proceeds to 
displays it as HTML5. The downside is that the reader currently doesn't support many of the 
more advanced features and interactive elements of the PDF format. At the time of writing, 
no major vulnerabilities in implementation were found.
Google Chrome ships with Foxit Reader plug-in pre-installed. Foxit Reader suffered 
from several major vulnerabilities in the past, some of which where shared with Adobe's 
Reader. However, it is a safe assumption that an attacker is more likely to target Adobe PDF 
Reader due to much larger userbase. Moreover, Chrome's rendering engine runs in a 
sandboxed module with restricted privileges [33]. These two factors alone greatly reduce the 
chance that user's system will be compromised by a malicious PDF file.
3.1.2 Server-side format conversion
The second approach is to convert the PDF file into another format, typically images, Flash 
movie or HTML markup, which can then be viewed in a browser. This way, the risk 
connected with opening and rendering suspicious PDF documents is carried by the web 
Documents you may be interested
Documents you may be interested