Reference no: EM133097627
Programming and Algorithms - Local Enumeration and Privilege Escalation
Learning Outcome 1: Working with version control systems
Learning Outcome 2: Use appropriate testing methodologies and tools
Learning Outcome 3: Develop software based on a design
Task: Tasks are to be undertaken in the Python programming language. You will be expected to include comments in your code to explain the behaviour of your code and provide a justification of your algorithm selection. You are also strongly advised to test your code for compilation on a system other than your own, prior to submission. Non-compiling code will not pass, see the marking rubric for further information.
You will create a GitHub private repository to store your source-code and manage version control of your work. Evidence of version control must be included in your regular commits to the repository over the period between the hand out date and due date. Your eventual submission via TurnItIn will link to that repository which must include all of your source-code.
The purpose of this task is for students to work in groups (a maximum of six people per group, but no less than three) to build a local enumeration and privilege escalation tool.
Local enumeration is concerned with analysing the target host for details such as:
• Usernames and group names
• Hostnames
• Network shares and services
This list is not exhaustive and can consist of more features. You can read this article for more information on what this tool may contain.
Privilege escalation is concerned with the increase of level access, either through a bug or design flaw. You can read this article for more information on what this tool will contain.
Assignment Tasks
To successfully complete this assignment you are required to complete the following tasks. Each task has a weight that is attributed towards a portion of the overall grade.
Task 1: Basic Tool
The purpose of this task involves creating a basic tool that consists of a menu system that can perform two methods of enumeration and one method of privilege escalation.
As this is a basic task, it is not required to work on multiple operating systems, and it can be assumed that you will be developing it to run on the system it is being developed within. The enumeration method will be expected to have a form of output displayed on the screen, whilst the privilege escalation should drop the user into a shell with an increased level of privilege.
Task 2: Advanced Tool
The purpose of this task is to build upon the work you have done in task one and adding six more methods of enumeration and another two methods of privilege escalation.
Additionally, the tool should also determine which operating system it is running on and only suggest appropriate options of your implemented methods to the user. The methods you have implemented for enumeration and privilege escalation, at least one of these should work on a different operating system to the others.
Task 3: Outputting
The purpose of this task is to build upon task one and two and provide a more advanced logging method. Instead of outputting to the console, it is expected for your groups tool to output to a file. An option is to be added to the menu to change from outputting to the terminal to a file. Note, it is best to ensure that you can log to a file of a given name and location.
Additionally, it is expected to see your tool be able to run with a parameter from terminal. For example, instead of running python LEAP.py, it is expected we can do python LEAP.py enumerate to display the menu options for enumeration methods.
Task 4: Testing
The purpose of this task will build upon the work you and your group have done in tasks one to three. For each method implemented, you are expected to write a test case to ensure it is working as expected.
It will be expected that the unit testing will be executed in a separate class file, and following the convention as shown in the lectures and labs.
Task 5: Version Control
The purpose of this task is to ensure that you are developing the tool iteratively and collaboratively using relevant version control features, such as forking, cloning and merging.
For your submission, you are to include a URL to the GitHub service repository along with the commit tag you want marking.
Task 6: Documentation
To aid in the marking of the assignment, documentation is relevant for the tool you are implementing. For each function worked upon, it is recommended you included a description of the methodology followed along with the name and student identification number of who implemented the function. It may have been a collaborative effort on a function, therefore explain who worked upon which part.
Additionally, documentation will be required to explain how the tool works. Therefore, it is important to include a README file in the repository outlining how the tool works, and a quick synopsis of functions that exist.
Task 7: Team Software Development
As this is a group assignment, you will be expected to work within a group of maximum six team members, but no less than three members. A portion of the marks have been allocated towards working as a group; and will be expected to see that each group member has provided something towards the project.
The purpose of this task is to see how you can work as a team and how you can interact with code written by other group members. It will also demonstrate your ability to work with other code repositories and using advanced functionality of the version control system.
Attachment:- Programming and Algorithms.rar